如何使用 LIKE 通配符在列中搜索(不区分大小写)?

新手上路,请多包涵

我环顾四周,没有找到我想要的东西,所以就到这里了。

 SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'

这工作正常,但如果树被命名为榆树或榆树等…

对于这个通配符搜索,如何使 SQL 不区分大小写?

我正在使用 MySQL 5 和 Apache。

原文由 David Morrow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 378
2 个回答
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.

这还将重建此列上的任何索引,以便它们可以用于不带前导 ‘%’ 的查询

原文由 Quassnoi 发布,翻译遵循 CC BY-SA 3.0 许可协议

例如,如果您想搜索 Raja not raja、Royal not Royal 等名称,请在 WHERE 子句中的列名前添加 BINARY

 SELECT name FROM person_tbl
WHERE BINARY name LIKE "R%";

原文由 Billu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题