Подтвердить что ты не робот

SQL SELECT LIKE (Нечувствительный корпус)

Я пытаюсь выполнить запрос sql:

select * from table where column like '%value%';

Но данные сохраняются как "Значение" (V является капиталом).

Когда я выполняю этот запрос, я не получаю никаких строк. Как сделать вызов таким образом, что он ищет "значение" независимо от обложки символов?

4b9b3361

Ответ 1

использовать LOWER в обоих (столбец и слово поиска). Сделав это, вы убедитесь, что даже если в запросе есть что-то вроде% VaLuE%, это не имеет значения.

select qt.*
from query_table qt
where LOWER(column_name) LIKE LOWER('%vAlUe%');

Ответ 2

Если вы хотите, чтобы этот столбец был нечувствительным к регистру:

ALTER TABLE `schema`.`table` 
CHANGE COLUMN `column` `column` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

Таким образом, вам не нужно менять свой запрос.

И двигатель MySQL обработает ваш запрос быстрее, чем с помощью функции lower() или любых других трюков.

И я не уверен, что использование более низкой функции будет хорошим решением для производительности поиска индексов.

Ответ 4

Используйте функцию lower():

select t.*
from table t
where lower(column) like '%value%';

Ответ 5

Попробуйте использовать нечувствительную к регистру сортировку

select * from table
where column like '%value%' collate utf8_general_ci

Ответ 6

вы должны использовать функцию ниже или верхняя, чтобы игнорировать случай, когда вы ищете какое-то поле, используя, например.

select * from student where upper(sname) like 'S%';

ИЛИ

select * from student where lower(sname) like 'S%';