3

鉴于文字:

"Hello, I'm from Hell",
"Hello, I'm from Ell"

和以下 SQL 子句:

SELECT * FROM table WHERE text LIKE '%ell%'

我得到了上面的两个文本,但我不想同时得到两个文本,因为我正在寻找文本“Ell”而不是“Hell”

如果有人知道我的意思,你能帮帮我吗?

提前致谢!

编辑:

更好的例子

就像你想寻找“大”这个词,但它不能是“更大”或“最大”等任何其他词的一部分

4

5 回答 5

9

您可以使用 MySQL Regex 单词边界匹配:

SELECT * FROM table WHERE text REGEXP '[[:<:]]ell[[:>:]]'

这匹配一个字符串,该字符串包含ell在任一侧具有单词边界的单词。

于 2013-04-11T16:51:24.867 回答
1

你也可以搜索一个空间吗?

SELECT * 
FROM table 
WHERE text LIKE '% ell%'
OR text LIKE 'ell%' // needed if string starts with ell
于 2013-04-11T16:48:38.160 回答
1

你可以试试这个:

SELECT * FROM table WHERE text LIKE BINARY '%ell%'
于 2013-04-11T16:49:50.973 回答
0

选择完全匹配不区分大小写

SELECT * FROM table where LOWER(column) like BINARY LOWER('ell')

如果文本有多行,它可以工作。

于 2013-04-11T17:04:49.860 回答
0

您可以在查询中使用 REGEXP。看看这个资源,它包含你需要的所有细节。

语法简单如下

$sql= "select * from post where title REGEXP '$s'";
于 2019-03-06T19:53:03.383 回答