我想选择仅在某个字段(名称)中的单词开头包含某些文本('one')的行。
示例:
1)name : name one check
2)name : name anotherone check
我只需要第 1 行。
我目前正在使用 LIKE %one% ,得到那些结果(第 1 行和第 2 行,比我需要的更多),然后我检查文本是否位于单词的开头并保留我需要的结果。
有没有办法运行一个查询,它会根据特定的字符打破名称字段中的值(比如说:“”),然后检查每个 Piece 是否文本位于它的开头?
问问题
72 次
1 回答
5
使用 Like 运算符:SELECT * FROM table WHERE name LIKE 'one%'
(不要%
在两边都使用,因为这会发现ANYTHINGoneANYTHING
。)
但是,如果单词可以出现在句子中的某处,则需要在 double %
: 添加一个空格,如下所示:LIKE '% one%'
以确保单词以“one”开头。如果单词需要独立,您可以使用LIKE '% one %'
(但这不会匹配字段的开头或结尾。它将失败one test
。)
要绕过此问题,您可以将字段与前导和尾随空格连接:
... WHERE CONCATENATE(" ", CONCATENATE (field, " ")) LIKE '% one %'
这将匹配Theres one
, one goes home
and even if there is one that goes home
,但不匹配someone is there
or hes done
。
于 2013-10-02T16:21:22.190 回答