我正在尝试在地址字段中搜索P.O Box。
这是最好的解决方案吗?
SELECT *
FROM [Address] WITH (NOLOCK)
WHERE
Addressline1 LIKE ('%p.o%box%') OR
Addressline1 LIKE ('%p.o.box%') OR
Addressline1 LIKE ('%po%box%') OR
Addressline1 LIKE ('%p o%box%')
我应该使用正则表达式吗?
由于 Jothish
答案 0 :(得分:4)
LIKE关键字只具有类似RegEx的能力;请参阅http://msdn.microsoft.com/en-us/library/ms179859.aspx(只需单击“其他版本”即可获取SQL Server 2005的相应页面。)
您可以使用下划线'_'作为“单字符通配符”,例如“LIKE'%P_O_Box%'”表示“字母'P'后跟任意1个字符后跟'O'后跟任意1个字符后跟'Box'”。
您可以使用方括号'[]'来查找范围或字符集,例如“%P [。 ] O [。 ] Box%',意思是“'P'后跟一个空格或一个句号(没有别的),后跟'O',后跟一个空格或句号,然后是'Box'”。
旁注:比较字符串周围不需要括号。
但最终,正如billinkc建议的那样,如果可能的话,你应该在这个领域标准化数据。