Dav*_*row 266 mysql sql case-insensitive sql-like
我环顾了一些,但没有找到我之后的情况.
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果树名为Elm或ELM等,则不行......
如何使这种通配符搜索的SQL不区分大小写?
我正在使用MySQL 5和Apache.
Qua*_*noi 257
SELECT *
FROM trees
WHERE trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'
Run Code Online (Sandbox Code Playgroud)
实际上,如果你添加COLLATE UTF8_GENERAL_CI到列的定义中,你可以省略所有这些技巧:它会自动运行.
ALTER TABLE trees
MODIFY COLUMN title VARCHAR(…) CHARACTER
SET UTF8 COLLATE UTF8_GENERAL_CI.
Run Code Online (Sandbox Code Playgroud)
这也将重建此列上的任何索引,以便它们可用于查询而不会导致'%'
cwa*_*ole 235
我总是使用较低的解决方法:
SELECT * FROM trees WHERE LOWER( trees.title ) LIKE '%elm%'
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 45
区分大小写在列/表/数据库排序规则设置中定义.您可以通过以下方式在特定排序规则下执行查询:
SELECT *
FROM trees
WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
例如.
(替换utf8_general_ci为您认为有用的任何排序规则).该_ci代表不区分大小写.
小智 38
这是一个简单LIKE查询的示例:
SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'
Run Code Online (Sandbox Code Playgroud)
现在,使用LOWER()函数不区分大小写:
SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')
Run Code Online (Sandbox Code Playgroud)
Vi8*_*i8L 23
只需使用:
"SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE '%elm%'";
Run Code Online (Sandbox Code Playgroud)
或者使用
"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE '%elm%'";
Run Code Online (Sandbox Code Playgroud)
两个功能都相同
Doğ*_*ğlu 14
我正在做那样的事情.
以小写形式获取值,MySQL完成其余的工作
$string = $_GET['string'];
mysqli_query($con,"SELECT *
FROM table_name
WHERE LOWER(column_name)
LIKE LOWER('%$string%')");
Run Code Online (Sandbox Code Playgroud)
对于MySQL PDO替代方案:
$string = $_GET['string'];
$q = "SELECT *
FROM table_name
WHERE LOWER(column_name)
LIKE LOWER(?);";
$query = $dbConnection->prepare($q);
$query->bindValue(1, "%$string%", PDO::PARAM_STR);
$query->execute();
Run Code Online (Sandbox Code Playgroud)
Mar*_*aci 12
在 MySql 中,
非二进制字符串比较(包括LIKE)默认不区分大小写: https ://dev.mysql.com/doc/refman/en/case-sensitivity.html
小智 7
我认为这个查询会做一个不区分大小写的搜索:
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
Run Code Online (Sandbox Code Playgroud)
小智 6
用 ILIKE
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
Run Code Online (Sandbox Code Playgroud)
它对我有用!!
你不需要ALTER任何桌子。只需在SELECT要使用通配符的实际查询之前使用以下查询:
set names `utf8`;
SET COLLATION_CONNECTION=utf8_general_ci;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
Run Code Online (Sandbox Code Playgroud)