日期:2014-05-18  浏览次数:20455 次

SQL的一个查询语句
有这样一个需求,一张表A的某个字段 规格型号 col_ggxh,这里面之前有些数据 ,数据值不规范,有很多 特殊字符,也有的 中间 有空格(不确定有几个空格),现在想根据 穿过来的参数 ggxh 进行like 查询 ,参数也是不规范的也有空格特殊字符等 有没有什么好的方法 能将里面的 特殊字符 和 空格 过滤掉 不进行 比较
我现在 想这样处理
将特殊字符 用 % 替代,然后进行like,但这样进行处理后 查询结果 就比较 多,有没有什么好的方法 处理下?

------解决方案--------------------
--去除特殊字符,只留0-9,a-z,A-Z

declare @teststr varchar(100)

set @teststr='test #123^we'

while patindex('%[^0-9a-zA-Z]%',@teststr)>0

? SET @teststr=STUFF(@teststr, patindex('%[^0-9a-zA-Z]%',@teststr),1,'')




SELECT @teststr?

--这是个测试用例你看下,然后就很轻松的搞定你的问题了。

具体:insert into test select * from 你的表名
? update test set col_ggxh=STUFF(@teststr, patindex('%[^0-9a-zA-Z]%',@teststr),1,'')

用上面的语句处理一下你传进来的字符,生成ggxh_c

然后就 select * from test where col_ggxh like ggxh_c

大功告成。