我的查询查找包含特定标签的数据集,例如:
SELECT * FROM Authors
WHERE Title LIKE @pattern
其中@pattern由用户定义。因此,%abc%
会匹配abcd
,0abc
等。有时会有像
我正在寻找包含abc和ONE或TWO的标签,例如%abc%(ONE|TWO)%
。有可能吗?
答案 0 :(得分:0)
也许我不明白你的问题,但为什么不简单
SELECT * FROM Authors
WHERE Title LIKE '%abc%ONE%' OR '%abc%TWO%'
LIKE
只是一个带有通配符的搜索,仅此而已,所以实际上没有其他方法可以使用LIKE
执行您想要的操作。如果您需要更多内容,请查看regular expressions。但请注意,它比LIKE
慢,在您的情况下绝对没有必要。
<强>更新强>
来自评论“不想关心用户想要匹配的东西”......然后就这样做:
SELECT * FROM Authors
WHERE Title LIKE CONCAT('%', $userInput, '%ONE%') OR CONCAT('%', $userInput, '%TWO%')
或者我仍然不能帮到你?
答案 1 :(得分:0)
您可以通过CLR函数向SQL Server添加对正则表达式的支持,如this answer所示,但您可能无法在您的环境中使用。请咨询友好的系统管理员!
答案 2 :(得分:0)
如果您使用的是SQL Server,您可以启用全文搜索引擎并使用包含和附近的键盘在ONE附近找到abc
我会在查询中说(伪代码)
Select something from table where CONTAINS(column_name, 'abc NEAR ONE')