0

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

  SELECT * FROM Authors
  WHERE Title LIKE @pattern

其中@pattern 由用户定义。所以,%abc%会匹配abcd,0abc等。有时会有像这样的标签

  1. Xabc-ONE
  2. blaYabc-TWO-sometext
  3. Zabc-三
  4. blubXabc-四

我正在寻找包含 abc 和 ONE 或 TWO 的标签,例如%abc%(ONE|TWO)%. 可能吗?

4

3 回答 3

0

如果您使用的是 SQL Server,您可以启用全文搜索引擎并使用键盘 contains 和 near 查找 ONE 附近的 abc

我会在查询中说(伪代码)

Select something from table where CONTAINS(column_name, 'abc NEAR ONE')

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

于 2014-09-22T14:03:48.567 回答
0

也许我不明白你的问题,但为什么不简单

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%')

还是我还是没听懂你的意思?

于 2012-08-07T08:47:18.313 回答
0

您可以通过 CLR 函数向 SQL Server 添加对正则表达式的支持,如本答案所示,但在您的环境中可能无法实现。请咨询您友好的系统管理员!

于 2012-08-07T09:05:22.443 回答