英文SQL SERVER 2000 SP4
WINDOWS SERVER 2000 英文
TABLE 表中有一DES字段VARCHAR 
存有英文加中文内容 ,
现要根据中文关键字模糊查询相关记录,
通常英文没问题
SELECT * FROM TABLE1 WHERE DES LIKE '%中文%‘
但中文不行,无结果或不是正确结果,
找过N年前的贴子,加N,也不行,SELECT * FROM TABLE1 WHERE DES LIKE N'%中文%‘现试过修改数据库字符集为Chinese_PRC_CI_AS,无果
再依次试改字段类型为NVARCHAR
也无果
其它方法:
SELECT DES FROM UN_ITEM1 
with(index=IX_UN_ITEM1)
 WHERE PATINDEX(DES, N'光油')>0
SELECT * FROM TABLE1 WHERE DES LIKE N'%中文%‘
collate chinese_prc_bin
--collate Chinese_PRC_CI_ASSELECT * FROM TABLE1 WHERE DES LIKE '%中文%‘
collate chinese_prc_bin
--collate Chinese_PRC_CI_AS都无果,
。。郁焖加痛苦中。恳请哪位大佛化解,谢谢!
SQL  LIKE  模糊查询中文

解决方案 »

  1.   

    那select * from 表的表结果,能显示出中文不
      

  2.   

    对了 虽然已经把数据库的排序规则改成了 Chinese_PRC_CI_AS,这个字段DES 的排序规则是什么,
      

  3.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出
      

  4.   


    有些能显示中文,有些显示是??
    在应用程序中能部分显示中文,但在英文SQL QUERY 中还是乱码
      

  5.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则
      

  6.   

    其他的列有这种问题吗,能不能这样:先建个表tb,一个字段des nvarchar类型,然后插入中文,再查询看,能不能查询到。如果能查询到,那说明不是系统的问题。如果查出来,也是乱码,那说明,可能是系统的字符集的问题
      

  7.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则在该表设计中显示 collation 是Latin1_General_BIN
      

  8.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则在该表设计中显示 collation 是Latin1_General_BIN改成 :Chinese_PRC_CI_AS 试试
      

  9.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则在该表设计中显示 collation 是Latin1_General_BIN改成 :Chinese_PRC_CI_AS 试试
    SQL collation 中没有,但在WINDOWS collation中有Chinese_PRC_STROKE
    使用RESTORE DEFAUT  是CHINESE_PRC 后
    在属性中显示database default, 该 DATABASE 已改为Chinese_PRC_CI_AS,
    但该表有太多索引值,无法保存更改,删除一个索引又来一个,都要删除吗?
    'UN_ITEM1' table
    - Unable to create index 'Z_24304747'.  
    ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX 终止,因为发现了索引 ID 2 的重复键。最重要的主键为 '004-·à???á&?'。
    [Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。
      

  10.   

    应该也是Chinese_PRC_CI_AS 了吧,
    新建对DES的索引,也查不出你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则在该表设计中显示 collation 是Latin1_General_BIN改成 :Chinese_PRC_CI_AS 试试
    SQL collation 中没有,但在WINDOWS collation中有Chinese_PRC_STROKE
    使用RESTORE DEFAUT  是CHINESE_PRC 后
    在属性中显示database default, 该 DATABASE 已改为Chinese_PRC_CI_AS,
    但该表有太多索引值,无法保存更改,删除一个索引又来一个,都要删除吗?
    'UN_ITEM1' table
    - Unable to create index 'Z_24304747'.  
    ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX 终止,因为发现了索引 ID 2 的重复键。最重要的主键为 '004-·à???á&?'。
    [Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。
    错误提示中最重要的主键为 '004-·à???á&?'。,表中数据引起键值重复了,
      

  11.   


    试试这样呢:SELECT * FROM TABLE1 
    where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS
      

  12.   


    试试这样呢:SELECT * FROM TABLE1 
    where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS
    无果
      

  13.   


    试试这样呢:SELECT * FROM TABLE1 
    where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS
    无果你能不能这样,再建个表xxx,只用一个字段,des nvarchar类型,然后:insert into xxx
    select des
    from 原表你看看,把数据导入到新的表xxx后,能查询吗
      

  14.   


    试试这样呢:SELECT * FROM TABLE1 
    where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS
    无果你能不能这样,再建个表xxx,只用一个字段,des nvarchar类型,然后:insert into xxx
    select des
    from 原表你看看,把数据导入到新的表xxx后,能查询吗
    查询不到,而且打开表中文只能是乱码
    按这种方式建的新表导入数据后,用DELPHI 建一个连接查询程序' SELECT DES FROM ITEM' 结果,中文也都是乱码
      

  15.   

    真是悲剧啊,楼主不知道有 nvarchar 么?
      

  16.   


    试试这样呢:SELECT * FROM TABLE1 
    where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS
    无果你能不能这样,再建个表xxx,只用一个字段,des nvarchar类型,然后:insert into xxx
    select des
    from 原表你看看,把数据导入到新的表xxx后,能查询吗
    查询不到,而且打开表中文只能是乱码
    按这种方式建的新表导入数据后,用DELPHI 建一个连接查询程序' SELECT DES FROM ITEM' 结果,中文也都是乱码
    但是用这个DELPHI程序新录入的中文,在SQLQUERY 和该程序都可以查询得到
    以前存储的中文数据无法挽救了吗?似乎很复杂了
      

  17.   

    这个显示乱码,而在旧的应用系统中大多行能显示,部分行数据中的个别中文显示?我刚才试了一下,还是不行,里面都是?,确实是显示不出中文,要是一开始的时候,表的字段就设计为nvarchar类型,就好了,就不会这么麻烦了。你的意思是,在就的应用程序中,能显示出中文是吧,看来只能是先用应用程序,把数据读出来,然后再写到另一张表里,最后再把数据,导入到原来的表中
      

  18.   

    这个显示乱码,而在旧的应用系统中大多行能显示,部分行数据中的个别中文显示?我刚才试了一下,还是不行,里面都是?,确实是显示不出中文,要是一开始的时候,表的字段就设计为nvarchar类型,就好了,就不会这么麻烦了。你的意思是,在就的应用程序中,能显示出中文是吧,看来只能是先用应用程序,把数据读出来,然后再写到另一张表里,最后再把数据,导入到原来的表中
    的确这是一个不得已的办法,还有没其它更好的办法呢?
      

  19.   

    这个显示乱码,而在旧的应用系统中大多行能显示,部分行数据中的个别中文显示?我刚才试了一下,还是不行,里面都是?,确实是显示不出中文,要是一开始的时候,表的字段就设计为nvarchar类型,就好了,就不会这么麻烦了。你的意思是,在就的应用程序中,能显示出中文是吧,看来只能是先用应用程序,把数据读出来,然后再写到另一张表里,最后再把数据,导入到原来的表中
    的确这是一个不得已的办法,还有没其它更好的办法呢?
    呵呵,暂时没想到什么好的办法。
      

  20.   


    /*如果以nvarchar,或者加N,都无果,你基本无指望了,因为该格式,以2个字节可以表示任何字符。此方法都不行,你就不用试图从排序规则方向解决了。

    */
      

  21.   

    愿闻其详
    建表时存中文的字段就要用 nvarchar 类型啊,它可以兼容所有语言,其实是 unicode 类型。
      

  22.   

    愿闻其详
    建表时存中文的字段就要用 nvarchar 类型啊,它可以兼容所有语言,其实是 unicode 类型。

    说的不错,可这是已用了多年而且还在用着的老系统库,数据量已达上十万条,能不改数据库尽量不改