我花了几个小时研究这个并且很难过,可能是因为我经常使用RegEx表达式。
我希望在Microsoft SQL 2008中的VARCHAR或TEXT类型列中匹配整个单词。
我有一个CLR程序集RegEx Function installed。
我需要它来匹配这些示例中的枪:
而不是在这些情况下:
我宁愿不去全文搜索路线。
以下是我尝试但失败的一些事情:
WHERE PATINDEX( '%[^a-zA-Z_]' + @keyword + '[^a-zA-Z_]%', name) > 0
...没有考虑字符串开头的单词
WHERE name LIKE '%\b' + @keyword + '\b%'
...不会返回任何内容
WHERE name LIKE '%[^A-Za-z]' + @keyword + '[^A-Za-z]%'
...没有考虑字符串开头的单词
......和其他一些我没有保存的人
我似乎无法依赖http://gskinner.com/RegExr/这样的正则表达式测试人员来帮我解决这个问题。任何帮助表示赞赏。
答案 0 :(得分:3)
关键是修改name
进行比较。只需在开头和结尾添加一个空格,然后您将获得所有单词。例如:
WHERE ' '+name+' ' LIKE '%[^A-Za-z]' + @keyword + '[^A-Za-z]%'
应该做得很好。