SQL SELECT LIKE(不敏感shell)
我正在尝试执行SQL查询:
select * from table where column like '%value%';
但数据保存为“价值”(V是大写)。
当我执行这个查询时,我没有得到任何行。 我如何做这样的调用,不pipeangular色的shell如何,它都会寻找“价值”?
在列和search词中使用LOWER函数。 这样做,你保证,即使在查询是像%VaLuE%,这不会有问题
select qt.* from query_table qt where LOWER(column_name) LIKE LOWER('%vAlUe%');
在表格上使用不区分大小写的sorting规则 ,或者强制使用小写字母,例如
WHERE lower(column) LIKE lower('%value%');
如果你想这个列不区分大小写:
ALTER TABLE `schema`.`table` CHANGE COLUMN `column` `column` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
因此,你不必改变你的查询。
MySQL引擎将比使用lower()函数或任何其他技巧更快地处理您的查询。
而且我不确定使用较低的函数将是索引search性能的一个很好的解决scheme。
使用lower()
函数:
select t.* from table t where lower(column) like '%value%';
尝试使用不区分大小写的sorting规则
select * from table where column like '%value%' collate utf8_general_ci
您应该使用较低或较高的函数来忽略大小写,而您正在使用likesearch某个字段。
select * from student where upper(sname) like 'S%';
要么
select * from student where lower(sname) like 'S%';
如果你正在使用PostgreSQL,一个简单的解决scheme是使用像(ILIKE)那样的不敏感 :
SELECT * FROM table WHERE column ILIKE '%value%'