1

我想选择仅在某个字段(名称)中的单词开头包含某些文本('one')的行。
示例:
1)name : name one check
2)name : name anotherone check
我只需要第 1 行。
我目前正在使用 LIKE %one% ,得到那些结果(第 1 行和第 2 行,比我需要的更多),然后我检查文本是否位于单词的开头并保留我需要的结果。

有没有办法运行一个查询,它会根据特定的字符打破名称字段中的值(比如说:“”),然后检查每个 Piece 是否文本位于它的开头?

4

1 回答 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 homeand even if there is one that goes home,但不匹配someone is thereor hes done

于 2013-10-02T16:21:22.190 回答