Cada literal de cadenas de caracteres tiene un conjunto de caracteres y una colación, que no pueden ser nulos.
Un literal de cadena de caracteres puede tener un introductor de
conjunto de caracteres opcional y una cláusula
COLLATE
:
[_nombre_de_conjunto_de_caracteres
]'cadena_de_texto
' [COLLATEnombre_de_colación
]
Ejemplos:
SELECT 'cadena_de_texto
'; SELECT _latin1'cadena_de_texto
'; SELECT _latin1'cadena_de_texto
' COLLATE latin1_danish_ci;
Para el comando simple SELECT
'
, la
cadena de caracteres tiene el conjunto de caracteres y colación
definida por las variables de sistema
cadena_de_texto
'character_set_connection
y
collation_connection
.
La expresión
_
se llama formalmente introductor. Le dice
al parser: “la siguiente cadena de caracteres utiliza el
conjunto de caracteres nombre_de_conjunto_de_caracteres
X
”.
Esto ha sido fuente de confusión en el pasado. Enfaticemos pues
que un introductor no causa ninguna conversión, sino que es
estrictamente una señal que no cambia el valor de la cadena de
caracteres. Un introductor también es legal antes de la
notación para literales hexadecimales y literales numéricos
hexadecimales
(x'
y
literal
'0x
), y antes
de nnnn
?
(parámetros de sustitución al usar
comandos preparados dentro de la interfície de un lenguaje de
programación).
Ejemplos:
SELECT _latin1 x'AABBCC'; SELECT _latin1 0xAABBCC; SELECT _latin1 ?;
MySQL determina el conjunto de caracteres y colación para un literal así:
Si se especifican _X
y
COLLATE
,
entonces el conjunto de caracteres es
Y
X
y se usa la colación
Y
.
Si se especifica _X
pero no se
especifica COLLATE
, entonces el conjunto
de caracteres es X
y el conjunto
de caracteres es el de defecto.
En cualquier otro caso, se utilizan el conjunto de
caracteres y la colación que hay en las variables de
sistema character_set_connection
y
collation_connection
.
Ejemplos:
Una cadena de caracteres con conjunto de caracteres
latin1
y colación
latin1_german1_ci
:
SELECT _latin1'Müller' COLLATE latin1_german1_ci;
Una cadena de caracteres con conjunto de caracteres
latin1
y su colación por defecto (esto
es, latin1_swedish_ci
):
SELECT _latin1'Müller';
Una cadena de caracteres con conjunto de caracteres y colación por defecto de la conexión:
SELECT 'Müller';
Los introductores de conjunto de caracteres y la cláusula
COLLATE
se implementan según las
especificaciones del estándar SQL.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.