SQL Server 2005用模糊检索时,检索数字或字母时,会把中文都查出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 2005用模糊检索时,检索数字或字母时,会把中文都查出来相关的知识,希望对你有一定的参考价值。

如题,例如:
select t from a where text like '%' x '%'
x=1-9或x=a-z
这个问题应该是因为中文在数据库中以unicode的方式存储,所以能查出来,但是这个问题要怎么解决呢?

我觉得不会吧 你的意思是 你写的 like \'%a%\' 会把没有a但是会把带有“安”或者“奥”之类的也查出来吗 是不是数据库设计或者 别的地方的问题 我这里查怎么就没这个问题呢追问

不是这样,
是like %1%的话,
是会把字段中字符编码中带有1的中文找出来。

追答

我明白你的意思 但是我觉得这个是不太可能的吧 如果是这样的话 那感觉微软设计的这个ms sql server 就像是有问题的 我觉得还是别的方面的问题

追问

我做过几次测试发现的这个问题,也不知道对不对。但几天下来,也不知道怎么解决这个。

参考技术A 不应该这么写吧

select t from a where text like '%'+x+'%'

试试。追问

我那只是个例子。。。。。。。要真那么写是报错的。

追答

我给你说的意思是,

你必须把字符连接起来 : 比如 like '%1%','%a%'

这样才行 '%'+x+'%'

而你的 '%' x '%' 是什么呢 ? like '%' 1 '%'

这是什么呢 ?? 肯定不是你要的。

追问

- -! 不纠结这个问题,我在查询的写法是没错就行了,不会是这里的问题。这个是敢肯定的。
select distinct id,title,summary,dateandtime from db_Mymark
where summary like '%' + @searchname + '%'

追答

那就不清楚了,但是我还是不太同意你的推论:

“应该是因为中文在数据库中以unicode的方式存储,所以能查出来”

我觉得如果是这样,也太恐怖了。

追问

因为我也只能想到这样,因为中文编码就是一串数字字母的组合,这么解释还能解释过去。但就是不知道怎么解决。

追答

我还是建议你从自己程序的方面考虑考虑,不应该出现这种情况。

追问

是的,我是考虑先把字符转为编码再查的,但发现,数字怎么转都还是那个。。。。于是又晕了。

参考技术B 晕了

以上是关于SQL Server 2005用模糊检索时,检索数字或字母时,会把中文都查出来的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server性能优化运用SQL Server的全文检索来提高模糊匹配的效率

sql server 模糊查询和聚合函数

sql server 模糊查询和聚合函数

数据查询 sql sever 2005

检索插入记录的 ID:Php & MS SQL SERVER

sqlserver2005模糊查询分页具体该怎么实现?