Как я могу искать (нечувствительный к регистру) в столбце с помощью КАК подстановочный знак?

Я осмотрел некоторых и не нашел то, чем я был после, таким образом, здесь идет.

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

Это хорошо работает, но не, если дерево называют Вязом или ELM и т.д...

Как я делаю SQL нечувствительным к регистру для этого подстановочного поиска?

Я использую MySQL 5 и Apache.

264
задан Muntasir 16 September 2019 в 20:53
поделиться

5 ответов

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. 

Это также перестроит все индексы в этом столбце, чтобы их можно было использовать для запросов без начала "%"

257
ответ дан 23 November 2019 в 02:28
поделиться

Я всегда решал эту проблему с помощью lower:

SELECT * FROM trees WHERE LOWER( trees.title ) LIKE  '%elm%'
234
ответ дан 23 November 2019 в 02:28
поделиться

Вы должны настроить правильную кодировку и сортировку для своих таблиц.

Кодировка таблицы должна отражать фактическую кодировку данных. Какая у вас кодировка данных?

Чтобы увидеть кодировку таблицы, вы можете выполнить запрос SHOW CREATE TABLE имя_таблицы

0
ответ дан 23 November 2019 в 02:28
поделиться

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

0
ответ дан 23 November 2019 в 02:28
поделиться

Чувствительность к регистру определяется в параметрах сортировки столбцов / таблиц / базы данных. Вы можете выполнить запрос при определенном сопоставлении следующим образом: например,

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

.

(Замените utf8_general_ci любым параметром сортировки, который сочтете полезным). _ci означает без учета регистра .

45
ответ дан 23 November 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: