当前位置: 代码迷 >> Sql Server >> sQL2000 查询不出汉语言 试过加N 也不行
  详细解决方案

sQL2000 查询不出汉语言 试过加N 也不行

热度:29   发布时间:2016-04-24 19:50:47.0
sQL2000 查询不出中文 试过加N 也不行
英文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_AS

SELECT * FROM TABLE1 WHERE DES LIKE '%中文%‘
collate chinese_prc_bin
--collate Chinese_PRC_CI_AS

都无果,
。。。。。郁焖加痛苦中。。。。

恳请哪位大佛化解,谢谢!
SQL??LIKE??模糊查询中文

------解决方案--------------------
其他的列有这种问题吗,能不能这样:

先建个表tb,一个字段des nvarchar类型,然后插入中文,再查询看,能不能查询到。如果能查询到,那说明不是系统的问题。

如果查出来,也是乱码,那说明,可能是系统的字符集的问题
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

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

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


你在管理工具中,选择这个des列,右键“属性”,看看这个列的 排序规则


在该表设计中显示 collation 是Latin1_General_BIN


改成 :Chinese_PRC_CI_AS 试试
------解决方案--------------------
引用:
看来这是个碉堡了,不然原来的应用系统可能会无法正确运行


先别改了,改了反而是报了一堆错误。
------解决方案--------------------
引用:
看来这是个碉堡了,不然原来的应用系统可能会无法正确运行


试试这样呢:

SELECT * FROM TABLE1 
where DES collate Chinese_PRC_CI_AS like N'%中文%' collate Chinese_PRC_CI_AS





------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

看来这是个碉堡了,不然原来的应用系统可能会无法正确运行


试试这样呢:

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后,能查询吗
------解决方案--------------------
真是悲剧啊,楼主不知道有 nvarchar 么?
------解决方案--------------------
引用:
Quote: 引用:

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

这个显示乱码,而在旧的应用系统中大多行能显示,部分行数据中的个别中文显示?


我刚才试了一下,还是不行,里面都是?,确实是显示不出中文,要是一开始的时候,表的字段就设计为nvarchar类型,就好了,就不会这么麻烦了。

你的意思是,在就的应用程序中,能显示出中文是吧,看来只能是先用应用程序,把数据读出来,然后再写到另一张表里,最后再把数据,导入到原来的表中
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

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

这个显示乱码,而在旧的应用系统中大多行能显示,部分行数据中的个别中文显示?


我刚才试了一下,还是不行,里面都是?,确实是显示不出中文,要是一开始的时候,表的字段就设计为nvarchar类型,就好了,就不会这么麻烦了。

你的意思是,在就的应用程序中,能显示出中文是吧,看来只能是先用应用程序,把数据读出来,然后再写到另一张表里,最后再把数据,导入到原来的表中

的确这是一个不得已的办法,还有没其它更好的办法呢?



呵呵,暂时没想到什么好的办法。
------解决方案--------------------

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

*/

------解决方案--------------------
引用:
Quote: 引用:

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

愿闻其详

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

------解决方案--------------------
数据库显示不了中文字符也是挺烦人的。
  相关解决方案