SQL LIKE用于部分句子值

时间:2013-09-06 19:57:53

标签: sql sql-like phrase

我有一个数据库(更改),我试图在详细信息字段值上创建一个sql报告。问题是细节值显示“短语”,我需要根据这个短语或其中的一部分进行评估。

SQL

SELECT *
FROM change
WHERE change.detail LIKE '%To: [Step Two]%'

我希望它显示详细信息包含“To:[1. Step Two]”的所有值,但结果始终没有返回任何值,其中有表值。以下是详细信息字段的完整值的示例: “[步骤]改变自:[1。第一步]至:[1。第二步]” []中的项目也表示数据库中的其他值

3 个答案:

答案 0 :(得分:2)

如果这是Microsoft SQL Server,那么您可以转义括号:

SELECT *
FROM change
WHERE change.detail LIKE '%To: \[Step Two\]%' ESCAPE '\'

括号使用LIKE子句代表字符范围,因此[Step Two]匹配To:之后的字符,即S,t,E,p,w或o。 / p>

您可以在MSDN上阅读此内容。

答案 1 :(得分:0)

假设您使用的是SQL Server / TSQL,那么您遇到的问题是the square bracket characters have a special meaning:

  

[]指定范围内的任何单个字符([a-f])或设置   ([abcdef])中。

     

WHERE au_lname LIKE'[C-P] arsen'找到以#结尾的作者姓氏   arsen,从C和P之间的任何单个字符开始,为   例如Carsen,Larsen,Karsen等。在范围搜索中,   包含在范围内的字符可能因排序而异   整理规则。

为了与方括号字符字面匹配,您需要escape them:

LIKE '%To: \[Step Two\]%' ESCAPE '\'

答案 2 :(得分:0)

部分问题是方括号引入了字符常量。这是一个解决方案:

where change.detail like '%To:  ___Step Two_%'

这只冒了比赛真正需要方括号的风险。

where change.detail like '%To:  __[[]Step Two]%'

另一种方法是逃避这些角色:

where change.detail like '%To:  __![Step Two!]%' escape '!'