鉴于文字:
"Hello, I'm from Hell",
"Hello, I'm from Ell"
和以下SQL子句:
SELECT * FROM table WHERE text LIKE '%ell%'
我得到了上面的两个文本,但我不想得到这两个文本,因为我正在寻找文本 “Ell”而不是“Hell”
如果有人知道我的意思,你能帮助我吗?
提前致谢!
修改
更好的例子
就像你想要寻找“大”这个词一样,但它不能成为“更大”或“最大”之类的任何其他词的一部分
答案 0 :(得分:9)
您可以使用MySQL Regex字边界匹配:
SELECT * FROM table WHERE text REGEXP '[[:<:]]ell[[:>:]]'
这匹配一个字符串ell
和一边的字边界。
答案 1 :(得分:1)
你也可以搜索一个空格吗?
SELECT *
FROM table
WHERE text LIKE '% ell%'
OR text LIKE 'ell%' // needed if string starts with ell
答案 2 :(得分:1)
你可以试试这个:
SELECT * FROM table WHERE text LIKE BINARY '%ell%'
答案 3 :(得分:0)
选择完全匹配无区分大小写
SELECT * FROM table 其中LOWER(列)喜欢BINARY LOWER(&#39; ell&#39;)
如果文本有多行,则可以正常工作。
答案 4 :(得分:0)
您可以仅在查询中使用REGEXP。看看这个资源,其中包含您需要的所有细节。
语法很简单,如下所示
$sql= "select * from post where title REGEXP '$s'";