Каждый символьный строковый литерал имеет набор символов и порядок сопоставления, которые могут быть ненулевыми.
Строковый литерал может иметь необязательное представление набора символов и конструкцию 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 определяет символьный набор и порядок сопоставления литералов следующим образом:
- Если указано и _Х, и COLLATE Y, применяется символьный набор Xи порядок со
поставления Y. - Если _Х указано, a COLLATE нет, используется набор Xи его порядок сопоставления
по умолчанию. - В противном случае применяется набор символов и порядок сопоставления, задан
ные системными переменными character_set_connection и collation_connection.
Примеры:
- Строка с набором символов latinl и порядком сопоставления latinl_german_ci:
SELECT _latinrMuller’ COLLATE latinl_germanl__ci; - Строка с набором символов latinl и порядком сопоставления по умолчанию (то
есть, latinl_swedish_ci):
SELECT _latinl’Muller’;
- Строка с набором символов и порядком сопоставления по умолчанию:
SELECT ‘Muller’;
Представители наборов символов и конструкция collate реализованы в соответствии с требованиями стандарта SQL.