我想选择仅在某个字段(名称)中的单词的开头包含某些文本('one')的行。
示例:
1)名称:名称一检查
2)姓名:姓名别人检查
我只需要第1行。
我目前正在使用LIKE%1%,得到那些结果(第1行和第2行,然后我需要的更多),然后检查文本是否位于单词的开头是否存在并保留我需要的结果。
有没有办法运行一个查询,它会根据特定的字符(例如:“”)打破名称字段中的值,然后检查每个文件是否位于文本的开头?
答案 0 :(得分:5)
使用Like运算符:SELECT * FROM table WHERE name LIKE 'one%'
(请勿在双方使用%
,因为这会找到ANYTHINGoneANYTHING
。)
但是,如果单词可以出现在句子的某个位置,则需要双%
:
添加一个空格,如下所示:LIKE '% one%'
以确保单词STARTS为“one”。
如果单词必须是独立的,您可以使用LIKE '% one %'
(但是这不会匹配字段的开头或结尾。它会在one test
上失败。)
要绕过此问题,您可以将字段与前导和尾随空格连接:
... WHERE CONCATENATE(" ", CONCATENATE (field, " ")) LIKE '% one %'
这将匹配Theres one
,one goes home
甚至if there is one that goes home
,但不会匹配someone is there
或hes done
。