我四处看了看,没有找到我要找的东西,所以就这样了。
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。
当前回答
例如,如果你想搜索像Raja不是Raja, Royal不是Royal等名称,在WHERE子句的列名前添加BINARY。
SELECT name FROM person_tbl
WHERE BINARY name LIKE "R%";
其他回答
SELECT *
FROM trees
WHERE trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'
实际上,如果您将COLLATE UTF8_GENERAL_CI添加到列的定义中,您可以忽略所有这些技巧:它将自动工作。
ALTER TABLE trees
MODIFY COLUMN title VARCHAR(…) CHARACTER
SET UTF8 COLLATE UTF8_GENERAL_CI.
这还将重新构建此列上的任何索引,以便它们可以用于不以'%'为前导的查询。
限制使用ILIKE
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
这对我很管用!!
我认为这个查询将进行不区分大小写的搜索:
SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
我正在做类似的事情。
获取小写的值,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 * FROM trees WHERE LOWER( trees.title ) LIKE LOWER('%elm%');