Как отличить s от ş в подобном поиске

0

У меня есть столбец varchar в таблице в mysql. Когда я делаю подобный поиск в этом столбце, если я ищу "% asd%", появляются записи, содержащие "aşd". Есть ли способ предотвратить это?

Я пробовал с почти любым сопоставлением, он ведет себя одинаково. Обычно я использую utf8mb4_unicode_ci.

Теги:

1 ответ

1

Вы можете установить COLLATION на UTF8_BIN

    MariaDB [(none)]> SELECT
    ->         'aşd'  LIKE  'asd' COLLATE 'utf8_bin' AS BIN,
    ->         'aşd'  LIKE  'asd' COLLATE 'utf8_general_ci'  AS CI;
+------+------+
| BIN  | CI   |
+------+------+
|    0 |    1 |
+------+------+
1 row in set (0.00 sec)

Вы также можете поместить это в свое предложение WHERE как

SELECT * FROM YOUR_TABLE WHERE VARFIELD like 'asd' COLLATE 'utf8_bin';
  • 0
    Я попытался установить параметры сортировки таблицы в utf8_bin. Это не помогает. Если я использую ключевое слово COLLATE в запросе, mysql выдаёт Unrecognized keyword. (near "COLLATE" at position 53) Unexpected token. (near "'utf8_bin'" at position 61)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню