【发布时间】:2013-06-07 21:54:30
【问题描述】:
我花了几个小时研究这个问题,很困惑,可能是因为我经常使用 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/ 之类的正则表达式测试器来帮助我解决这个问题。任何帮助表示赞赏。
【问题讨论】:
-
你真的在使用你的 CLR 正则表达式函数吗?你的例子看起来不像。
-
我正在抓住这个秒针。我认为现有代码看起来与文档不匹配。我会看看我是否看不懂那些文档。谢谢。
-
您没有使用任何 CLR 函数...只是本机
LIKE和PatIndex功能。
标签: sql regex sql-server-2008 tsql