我四处看了看,没有找到我要找的东西,所以就这样了。
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
这很好,但如果树的名字是Elm或Elm等…
我如何使SQL不区分大小写为这个通配符搜索?
我使用MySQL 5和Apache。
我四处看了看,没有找到我要找的东西,所以就这样了。
SELECT * FROM trees WHERE trees.`title` LIKE '%elm%'
这很好,但如果树的名字是Elm或Elm等…
我如何使SQL不区分大小写为这个通配符搜索?
我使用MySQL 5和Apache。
当前回答
我正在做类似的事情。
获取小写的值,MySQL完成其余的工作
$string = $_GET['string'];
mysqli_query($con,"SELECT *
FROM table_name
WHERE LOWER(column_name)
LIKE LOWER('%$string%')");
和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();
其他回答
SELECT name
FROM gallery
WHERE CONVERT(name USING utf8) LIKE _utf8 '%$q%'
GROUP BY name COLLATE utf8_general_ci LIMIT 5
您不需要更改任何表。只需使用以下查询,在实际的SELECT查询之前,你想使用通配符:
set names `utf8`;
SET COLLATION_CONNECTION=utf8_general_ci;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
简单地使用:
"SELECT * FROM `trees` WHERE LOWER(trees.`title`) LIKE '%elm%'";
或使用
"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE '%elm%'";
两个函数的工作原理是一样的
我总是用lower来解决这个问题:
SELECT * FROM trees WHERE LOWER( trees.title ) LIKE '%elm%'
非二进制字符串比较(包括LIKE)在MySql中默认是不区分大小写的: https://dev.mysql.com/doc/refman/en/case-sensitivity.html