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
大功告成。