declare @searchValue varchar(50) 
set @searchValue='%文%'select * from T_INC_TICKET
where ticket_id like  @searchValue or summary like @searchValue   我要模糊查询的记录如下:
Ticket_id           Summary
000000000000003 word文档无法保存问题:
我用“文”,能模糊查询出记录;用“文档”或者“档”无法查询出记录。还有条Summary记录是“流程测试专用事件模版”,然后就模糊查询“流程”或者“事件”都能查询出记录,查询“测试”、“模板”、“测试专用”都不能查询到记录。以前都没碰到过这种问题,刚才程序模糊查询不出准确的数据,我就直接在数据库里走这些SQL语句,还是一样的,中文的模糊查询有错。只有个别字的模糊查询有用。

解决方案 »

  1.   

    前边加 N   like N'%测试专用%'
      

  2.   

    declare @searchValue Nvarchar(50)  
    set @searchValue=N'%文%'select * from T_INC_TICKET
    where ticket_id like @searchValue or summary like @searchValue  
      

  3.   

    declare @searchValue Nvarchar(50)  
    set @searchValue=N'%文%'
    ---sql2000
    exec('select * from T_INC_TICKET where ticket_id like ''%'+@searchValue+'%'' or summary like ''%'+@searchValue+'%''')  
      

  4.   

    这个是java的hibernate里头的模糊查询语句,可是放了N在前头,程序就出错了。sql = sql + " AND (Ticket.ticketId like '%"+searchValue+"%' OR Ticket.summary like N'%" + searchValue + "%') ";提示:
    3290547 [http-8080-6] ERROR util.JDBCExceptionReporter  - [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: '%事件%' 附近有语法错误。
    3290547 [http-8080-6] WARN util.JDBCExceptionReporter  - SQL Error: 16945, SQLState: HY000麻烦各位大侠,再看看,Java里头加这个数据库的N,是怎么加的啊?
      

  5.   

    sql = sql + " AND (Ticket.ticketId like N'%"+searchValue+"%' OR Ticket.summary like N'%" + searchValue + "%') ";????
      

  6.   

    sql = sql + " AND (Ticket.ticketId like N'%"+searchValue+"%' OR Ticket.summary like N'%" + searchValue + "%') ";
      

  7.   


    这个是java代码,java里的hibernate的代码。
      

  8.   

    ticketId 都是字母和数字不用管。就是这个Summary这家伙有中文,然后模糊查询有问题。
      

  9.   

     连接字符串配置的时候加一个 ;characterEncoding=UTF-8
      

  10.   

    不行的,JAVA报错的。这个是JAVA语句的。不是SQL语句的。
      

  11.   

    不是可以new string('','UTF-8')  吗?具体语法忘了
      

  12.   

    谢谢大家,找到原因了。
    数据库的编码不对, 我改下数据库的编码
    ALTER DATABASE [数据库名] COLLATE Chinese_PRC_CI_AS然后就正常了。
    前面的“N”也可以不用加了。