如何在SQL Server 2008中搜索(MRS.)模式?尝试转义符和[]未生效
解决SQL Server 2008中搜索
(MRS.)的问题 嘿,我懂你在SQL Server 2008里搜(MRS.)碰壁的感觉——括号和点号容易让人误以为是通配符,之前用escape和[]没搞定大概率是用法没踩对。给你几个靠谱的解决方案:
直接用LIKE语句(最简方案)
在SQL Server的LIKE语法里,()和.本身都是普通字符,不需要额外转义。只要加上通配符%来匹配前后的任意内容就行,写法如下:SELECT * FROM 你的表名 WHERE 你的字段名 LIKE '%(MRS.)%';如果你要精准匹配整个字段就是
(MRS.),去掉前后的%就行。用CHARINDEX函数(更精准,无通配符干扰)
如果你担心通配符带来的意外匹配,直接用CHARINDEX查找子字符串的位置更稳妥,只要返回值大于0就说明存在目标内容:SELECT * FROM 你的表名 WHERE CHARINDEX('(MRS.)', 你的字段名) > 0;用ESCAPE关键字(冗余但可行的兜底方案)
要是你之前尝试ESCAPE没成功,可能是转义符和目标字符的搭配错了。比如指定\作为转义符,把(和.转义后再匹配:SELECT * FROM 你的表名 WHERE 你的字段名 LIKE '%\(MRS\.\)%' ESCAPE '\';不过说实话,SQL Server里这两个字符本来就不是通配符,这个写法属于冗余操作,但如果你的场景有特殊需求也能用。
为啥之前的[]方法没效果?
你可能把整个(MRS.)放进了[]里,比如写成LIKE '%[(MRS.)]%'——但[]在LIKE里是用来匹配单个字符的,比如[abc]会匹配a、b或c中的任意一个,所以这种写法只会匹配括号、M、R、S、点号里的某一个字符,而不是完整的(MRS.)字符串,自然搜不到你要的结果。
内容的提问来源于stack exchange,提问作者user3500529
相关产品推荐
相关产品推荐

