我正在尝试执行SQL查询:
select * from table where column like '%value%';
但是数据保存为'Value'(V是大写)。
当我执行此查询时,我没有获取到任何行。我该如何使调用查找不考虑字符大小写的'value'?
我正在尝试执行SQL查询:
select * from table where column like '%value%';
但是数据保存为'Value'(V是大写)。
当我执行此查询时,我没有获取到任何行。我该如何使调用查找不考虑字符大小写的'value'?
在列和搜索词中都使用LOWER函数。这样做可以确保即使查询中有像%VaLuE%这样的东西也不会影响结果。
select qt.*
from query_table qt
where LOWER(column_name) LIKE LOWER('%vAlUe%');
如果您希望此列不区分大小写:
ALTER TABLE `schema`.`table`
CHANGE COLUMN `column` `column` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
因此,您不需要更改查询。
而且MySQL引擎将比使用lower()函数或任何其他技巧更快地处理您的查询。
我不确定使用lower函数是否是索引搜索性能的好解决方案。
尝试使用不区分大小写的排序规则
select * from table
where column like '%value%' collate utf8_general_ci
lower()
函数:select t.*
from table t
where lower(column) like '%value%';
SELECT * FROM table WHERE column ILIKE '%value%'
在使用like搜索某个字段时,你应该使用lower或upper函数来忽略大小写。
select * from student where upper(sname) like 'S%';
或者
select * from student where lower(sname) like 'S%';
我知道这是一个非常老的问题,但我为后人发布此文:
在 MySql 中,默认情况下,非二进制字符串比较(包括LIKE
)是不区分大小写的:
https://dev.mysql.com/doc/refman/en/case-sensitivity.html
这最终将执行相同的操作。ILIKE 不考虑大小写的特性。
SELECT * FROM table WHERE column_name ILIKE "%value%"