我的查询查找包含特定标签的数据集,比如说:
SELECT * FROM Authors
WHERE Title LIKE @pattern
其中@pattern 由用户定义。所以,%abc%
会匹配abcd
,0abc
等。有时会有像这样的标签
- Xabc-ONE
- blaYabc-TWO-sometext
- Zabc-三
- blubXabc-四
我正在寻找包含 abc 和 ONE 或 TWO 的标签,例如%abc%(ONE|TWO)%
. 可能吗?
我的查询查找包含特定标签的数据集,比如说:
SELECT * FROM Authors
WHERE Title LIKE @pattern
其中@pattern 由用户定义。所以,%abc%
会匹配abcd
,0abc
等。有时会有像这样的标签
我正在寻找包含 abc 和 ONE 或 TWO 的标签,例如%abc%(ONE|TWO)%
. 可能吗?
如果您使用的是 SQL Server,您可以启用全文搜索引擎并使用键盘 contains 和 near 查找 ONE 附近的 abc
我会在查询中说(伪代码)
Select something from table where CONTAINS(column_name, 'abc NEAR ONE')
也许我不明白你的问题,但为什么不简单
SELECT * FROM Authors
WHERE Title LIKE '%abc%ONE%' OR '%abc%TWO%'
?
LIKE
只是使用通配符进行搜索,仅此而已,因此实际上没有其他方法可以使用LIKE
. 如果您需要更多,请查看正则表达式。但是请注意,它比LIKE
您的情况要慢,并且绝对没有必要。
更新:
从评论“不想关心用户想要匹配的内容”......然后简单地这样做:
SELECT * FROM Authors
WHERE Title LIKE CONCAT('%', $userInput, '%ONE%') OR CONCAT('%', $userInput, '%TWO%')
还是我还是没听懂你的意思?
您可以通过 CLR 函数向 SQL Server 添加对正则表达式的支持,如本答案所示,但在您的环境中可能无法实现。请咨询您友好的系统管理员!