2

我花了几个小时研究这个并且很困惑,可能是由于我经常使用 RegEx 表达式。

我希望在 Microsoft SQL 2008 的 VARCHAR 或 TEXT 类型列中匹配整个单词。

我安装了 CLR 程序集RegEx 函数

在这些示例案例中,我需要它来匹配枪:

  • 上膛的
  • 我的上膛

而不是在这些情况下:

  • 枪很棒
  • 我有我的枪
  • 我的枪很棒

我宁愿不走全文搜索路线。

以下是我尝试过但失败的一些事情:

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/之类的正则表达式测试器来帮助我完成此任务。任何帮助表示赞赏。

4

1 回答 1

3

关键是修改name以进行比较。只需在开头和结尾添加一个空格,然后您将获得所有单词。例如:

WHERE ' '+name+' ' LIKE '%[^A-Za-z]' + @keyword + '[^A-Za-z]%'

应该做得很好。

于 2013-06-07T21:59:32.987 回答