在T-SQL中使用LIKE是否存在通配符的替换?

时间:2012-08-07 07:35:33

标签: sql sql-server tsql wildcard sql-like

我的查询查找包含特定标签的数据集,例如:

  SELECT * FROM Authors
  WHERE Title LIKE @pattern

其中@pattern由用户定义。因此,%abc%会匹配abcd0abc等。有时会有像

这样的标签
  1. XABC-ONE
  2. blaYabc-TWO-sometext
  3. ZABC三
  4. blubXabc四
  5. 我正在寻找包含abc和ONE或TWO的标签,例如%abc%(ONE|TWO)%。有可能吗?

3 个答案:

答案 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')

http://msdn.microsoft.com/en-us/library/ms142568.aspx