Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中查找每个单词的数据?_Mysql - Fatal编程技术网

如何在mysql中查找每个单词的数据?

如何在mysql中查找每个单词的数据?,mysql,Mysql,因此,如果我使用此代码SELECT*FROM user where BINARY LOWER(name)比如LOWER('%{$search}%')如果我搜索单词LEE,那么所有使用LEE的字母都会出现。 像SLEEP、LEEYONE、ULEE、LEEOPARD等。 更糟糕的是,如果我搜索字母“A”,一切都会出现 你只能做每一个字吗?也许如果我搜索单词LEE,它只会出现LEEYONE试试WHERE name REGEXP'[[::]]' 如果您的排序规则设置为合理的值,您也不需要LOWER()。

因此,如果我使用此代码
SELECT*FROM user where BINARY LOWER(name)比如LOWER('%{$search}%')
如果我搜索单词LEE,那么所有使用LEE的字母都会出现。 像SLEEP、LEEYONE、ULEELEEOPARD等。 更糟糕的是,如果我搜索字母“A”,一切都会出现


你只能做每一个字吗?也许如果我搜索单词LEE,它只会出现LEEYONE

试试
WHERE name REGEXP'[[::]]'


如果您的排序规则设置为合理的值,您也不需要
LOWER()

您的查询
SELECT*来自用户,其中二进制LOWER(name)如LOWER('%{$search}%')
返回ULEE,因为存在通配符(%)围绕你的搜索词


如果将其更改为
SELECT*FROM user where BINARY LOWER(name)如LOWER(“{$search}”)
则对LEE的$search将只返回与LEE完全相同的条目


如果您还希望返回LEE,则需要将查询更改为
SELECT*FROM user where BINARY LOWER(name)如LOWER(“{$search}%”)
(请注意搜索词后面的%)

Hi为此,您必须使用全文搜索

链接下面的活示例检查


请尝试以下查询

SELECT * FROM user where BINARY LOWER(name) LIKE LOWER('% {$search} %') OR LOWER(name) LIKE LOWER('{$search} %') OR LOWER(name) LIKE LOWER('% {$search}')

从用户中选择*,其中二进制低位(名称)如低位('{$search}%')或二进制低位(名称)如低位('%%{$search}')或二进制低位(名称)如低位('{$search}%')或二进制低位(名称)如低位('{$search}'))确切地说,为什么要明确使用
二进制
比较,然后将关键字和数据转换为小写,以获得不区分大小写的(=非二进制)比较,虽然完全消除了所有潜在的索引好处,并可以预见地降低了您在大型表中的性能,但您应该在$search变量的开头和结尾添加一个空格,如下所示:“$search=”“$搜索" ";` 然后在查询中使用此变量。或者您也可以在查询中添加空格,如下所示:
SELECT*FROM user where BINARY LOWER(name)比如LOWER(“%$search}%”)
这是因为空格是分隔字符串中单词的元素。@ravendrappel和类似“this is a station with LEE.”的值呢?(注意后面的点)-或者只是一个简单的“LEE”@Franzgleichman我接受你的条件。所以在这种情况下,我们可以不这样使用:
%[^.?]{$search}[^.?]%
?我在正则表达式中使用了点、问号和空格。可以添加更多字符。这也将返回“LEEOPARD”;哪个OP明确表示不想。。。