A.5.1 Чувствительность к регистру при поиске
По умолчанию поиск в MySQL является независимым от регистра символов (хотя
существуют некоторые кодировки, которые всегда чувствительны к регистру,
такие как czech
). Это означает, что при поиске с помощью col_name LIKE
'a%'
будут выданы все значения столбца, начинающиеся на A или a. Если
необходимо выполнить тот же поиск с учетом регистра, для проверки префикса
следует использовать что-то вроде INSTR(col_name, "A")=1
или
STRCMP(col_name, "A") = 0
, если значение в столбце точно равно A
.
Простые операции сравнения (>=, >, =, <, <=
, сортировка и группировка)
основываются на "сорте" каждого символа. Символы одного сорта (такие как
E
, e
и E
) обрабатываются как одинаковые символы!
В старых версиях MySQL сравнения по LIKE
выполнялись над символами,
переведенными в верхний регистр (E == e
, но E <> E
). В новых версиях MySQL
LIKE
работает точно так же, как другие операторы сравнения.
Если необходимо, чтобы столбец всегда обрабатывался в с учетом регистра,
объявите его с типом BINARY
(see section 6.5.3 Синтаксис оператора CREATE TABLE
).
Если вы используете китайские данные в так называемой кодировке big5
, то
имеет смысл объявить все символьные столбцы как BINARY
. Сортировка таких
столбцов будет работать, поскольку порядок сортировки символов в кодировке
big5
основывается на порядке кодов ASCII
.