Поиск

Набор символов и порядок сопоставления строковых литералов

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

Строковый литерал может иметь необязательное представление набора символов и конструкцию COLLATE для указания порядка сопоставления:
[_имя__набора_символов] 'строка1 [COLLATE имя__порядкасопоставления) Примеры:
SELECT 'строка'; SELECT _latinlf строка1;
SELECT _latinl' строка1COLLATE latinl_danish_ci;
Для отдельного оператора SELECT 'строка' аргумент строка имеет символь­ный набор и порядок сопоставления, определенный системными переменными character_set_connection и collation_connection.
Выражение _имя_набора_символов формально называют представителем (introducer). Он сообщает анализатору, что строка, которая следует, имеет символьный набор X. Поскольку это часто смущало пользователей в прошлом, мы подчеркиваем, что представитель сам по себе не выполняет никакого преобразования, а просто явля­ется строгим сигналом, который не меняет значения строки. Представитель также мо­жет проставляться перед стандартным шестнадцатеричным литералом и числовым пред­ставлением шестнадцатеричного литерала (х1 литерал1 или Охлллл), а также перед ? (ме­стом подстановки параметров при использовании предварительно подготовленных операторов в интерфейсе языка программирования).
Ниже приведены примеры:
SELECT _latinl x'AABBCC; SELECT _latinl OxAABBCC; SELECT _latinl ?;
MySQL определяет символьный набор и порядок сопоставления литералов следую­щим образом:

  1. Если указано и _Х, и COLLATE Y, применяется символьный набор Xи порядок со­
    поставления Y.
  2. Если _Х указано, a COLLATE нет, используется набор Xи его порядок сопоставления
    по умолчанию.
  3. В противном случае применяется набор символов и порядок сопоставления, задан­
    ные системными переменными character_set_connection и collation_connection.

Примеры:

  1. Строка с набором символов latinl и порядком сопоставления latinl_german_ci:
    SELECT _latinrMuller' COLLATE latinl_germanl__ci;
  2. Строка с набором символов latinl и порядком сопоставления по умолчанию (то
    есть, latinl_swedish_ci):

SELECT _latinl'Muller';

  • Строка с набором символов и порядком сопоставления по умолчанию:
    SELECT 'Muller';

Представители наборов символов и конструкция collate реализованы в соответст­вии с требованиями стандарта SQL.