我制作人才网站,有一个搜索  我试过 SELECT *
FROM Publisher where realname like '%t1%' 语句 但是不知道为什么只要是添加where语句 就显示数据库为空的 我想问一下啊是怎么回事 应该怎么写
不好意思我没有分

解决方案 »

  1.   

    t1是什么?
    你是搜索realname中是否含用t1字符吗?
    我明白了。你是access.
    用 * 代替 % 吧!
      

  2.   

    ACCESS库的通配符和SQL SERVER的通配符不一样。 对于字符串模糊查询来说
    ACCESS库的通配符为:* 与任何个数的字符匹配。  (但在C#里的写法还是一样用%来代替*)
                                  ? 与任何单个字母的字符匹配
    在SQL Server中的通配符为:% 与任何个数的字符匹配 
                                        - 与单个字符匹配
    正确写法应是: 在C#里应写成 Select * From Table Where Name Like ''%keywords%''    这里还是与SqlServer一样 = =!
                                        Select * From Table Where Name Like ''_keywords_''
    在Access测试语句时应写成: Select * From Table Where Name Like ''*keywords*'' 
                                               Select * From Table Where Name Like ''?jkeywords?''
    附: Access的通配符
    * 与任何个数的字符匹配,它可以在字符串中,当做第一个或最后一个字符使用。 wh* 可以找到 what、white 和 why 
    ? 与任何单个字母的字符匹配。 B?ll 可以找到 ball、bell 和 bill 
    [ [ 与方括号内任何单个字符匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill 
    ! 匹配任何不在括号之内的字符。 b[!ae]ll 可以找到 bill 和 bull 但找不到 bell 
    - 与范围内的任何一个字符匹配。必须以递增排序次序来指定区域(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd 
    # 与任何单个数字字符匹配。 1#3 可以找到 103、113、123 
      

  3.   

    t1是一个变量 我将一个文本域的输入 赋予t1 难道应该写成like "*t1*"? 这个直接显示不正确了 真的是不明白 这个t1 不是要搜索的 只是一个输入的变量
      

  4.   

    declare @t1 varchar(20)
    set @t1='aaaa'
    --SELECT * FROM Publisher where realname like '%'+@t1+'%'
    或者
    exec('SELECT * FROM Publisher where realname like ''%'+@t1+'%''')
      

  5.   

    楼上这个aaaa 代表什么 t1本身是个变量是获取的一个输入值,怎么还给赋值了?
      

  6.   

    对了 忘了问了 declare @t1 varchar(20)在dreamweaver里没法添加 如果直接放入代码里 应该放在何处?
    <%
    Driver DriverRecordset2 = (Driver)Class.forName(MM_lh1_DRIVER).newInstance();
    Connection ConnRecordset2 = DriverManager.getConnection(MM_lh1_STRING,MM_lh1_USERNAME,MM_lh1_PASSWORD);
    PreparedStatement StatementRecordset2 = ConnRecordset2.prepareStatement("SELECT *  FROM jianli  where realname like  '+" + Recordset2__t1 + "+'  ");
    ResultSet Recordset2 = StatementRecordset2.executeQuery();
    boolean Recordset2_isEmpty = !Recordset2.next();
    boolean Recordset2_hasData = !Recordset2_isEmpty;
    Object Recordset2_data;
    int Recordset2_numRows = 0;
    %>
      

  7.   

    t1就相当于Recordset2__t1,不用添加。PreparedStatement StatementRecordset2 = ConnRecordset2.prepareStatement("SELECT * FROM jianli where realname like '+" + Recordset2__t1 + "+' ");怎么没有%中文的话前面试一下加个NPreparedStatement StatementRecordset2 = ConnRecordset2.prepareStatement("SELECT * FROM jianli where realname like N'%" + Recordset2__t1 + "%' ");
      

  8.   


    前面加个N 是这样么 SELECT *from jianli where realname like N'%t1%'? 这显示语法错误啊,关键不知道为什么不认中文 只能查出数据中的英文