10.4. Efectos del soporte de conjuntos de caracteres

MySQL 5.0

10.4. Efectos del soporte de conjuntos de caracteres

Esta sección describe operaciones que tienen en cuenta información sobre el conjunto de caracteres en MySQL 5.0.

10.4.1. Cadenas de caracteres de resultado

MySQL tiene varios operadores y funciones que retornan una cadena de caracteres. Esta sección responde a la pregunta: ¿Cuál es el conjunto de caracteres y colación de esta cadena de caracteres?

Para funciones simples que toman una entrada de cadenas de caracteres y devuelven una cadena de caracteres como salida, el conjunto de caracteres y colación de la salida son las mismas que las de la entrada. Por ejemplo ) devuelve una cadena de caracteres con un conjunto de caracteres y colación iguales a las de . Lo mismo se aplica para , , , , , , , , , , , , , , , y . (Debe tenerse en cuenta que la función , a diferencia del resto de funciones, ignora siempre la colación de la cadena de caracteres de entrada y realiza una comparación que no distingue entre mayúsculas y minúsculas).

Para operaciones que combinan varias cadenas de caracteres de entrada y devuelven una única cadena de salida, se aplica la “regla de agregación”estándar de SQL:

  • Si hay un explícito, usa .

  • Si hay un y explícitos, muestra un error.

  • De lo contrario, si todas las colaciones son , usa .

  • En cualquier otro caso, el resultado no tiene colación.

Por ejemplo, con END, la colación resultante es . Lo mismo se aplica para , , , , , , , y .

Para operaciones que conviertan datos de tipo carácter, el conjunto de caracteres y colación de las cadenas de caracteres resultantes de las operaciones se definen por las variables de sistema y . Esto se aplica en , , , , , y .

10.4.2. CONVERT()

proporciona un modo de convertir datos entre distintos conjuntos de caracteres. La sintaxis es:

CONVERT( USING )

En MySQL, "transcoding names" es lo mismo que los conjuntos de caracteres correspondientes.

Ejemplos:

SELECT CONVERT(_latin1'Müller' USING utf8);
INSERT INTO utf8table (utf8column)
    SELECT CONVERT(latin1field USING utf8) FROM latin1table;

se implementa según la especificación de SQL estándar.

En modo SQL , si convierte una cadena de caracteres de fecha “zero” en una fecha, retorna . MySQL 5.0.4 y versiones posteriores también muestran un mensaje de advertencia.

10.4.3. CAST()

Puede usar para convertir una cadena de caracteres a un conjunto de caracteres distinto. La sintaxis es:

CAST( AS  CHARACTER SET )

Ejemplo:

SELECT CAST(_latin1'test' AS CHAR CHARACTER SET utf8);

Si usa sin especificar , el conjunto de caracteres y colación resultantes se definen por las variables de sistema y . Si usa con , el conjunto de caracteres y colación resultantes son y la colación por defecto de .

Puede no usar una cláusula dentro de , pero puede hacerlo fuera. Esto es, es ilegal, pero es legal.

Ejemplo:

SELECT CAST(_latin1'test' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;

En modo SQL , si convierte una cadena de caracteres de fecha “zero” a una fecha, retorna . MySQL 5.0.4 y versiones posteriores muestran un mensaje de advertencia.

10.4.4. Sentencias SHOW

Varios comandos proporcionan información adicional de conjuntos de caracteres. Esto incluye , , , and .

El comando muestra todos los conjuntos de caracteres disponibles. Tiene una cláusula opcional que indica con qué nombres de conjunto de caracteres comparar. Por ejemplo:

mysql> SHOW CHARACTER SET LIKE 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description                 | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1  | ISO 8859-1 West European    | latin1_swedish_ci |      1 |
| latin2  | ISO 8859-2 Central European | latin2_general_ci |      1 |
| latin5  | ISO 8859-9 Turkish          | latin5_turkish_ci |      1 |
| latin7  | ISO 8859-13 Baltic          | latin7_general_ci |      1 |
+---------+-----------------------------+-------------------+--------+

Consulte Sección 13.5.4.1, “Sintaxis de .

La salida de incluye todos los conjuntos de caracteres. Tiene una cláusula opcional que indica con qué nombres de conjunto de caracteres comparar. Por ejemplo:

mysql> SHOW COLLATION LIKE 'latin1%';
+-------------------+---------+----+---------+----------+---------+
| Collation         | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1  |  5 |         |          |       0 |
| latin1_swedish_ci | latin1  |  8 | Yes     | Yes      |       0 |
| latin1_danish_ci  | latin1  | 15 |         |          |       0 |
| latin1_german2_ci | latin1  | 31 |         | Yes      |       2 |
| latin1_bin        | latin1  | 47 |         | Yes      |       0 |
| latin1_general_ci | latin1  | 48 |         |          |       0 |
| latin1_general_cs | latin1  | 49 |         |          |       0 |
| latin1_spanish_ci | latin1  | 94 |         |          |       0 |
+-------------------+---------+----+---------+----------+---------+

Consulte Sección 13.5.4.2, “Sintaxis de .

muestra el comando que crea una base de datos dada. El resultado incluye todas las opciones de la base de datos y están soportadas. Todas las opciones de las bases de datos se guardan en un fichero de datos llamado que se encuentra en el directorio de la base de datos.

mysql> SHOW CREATE DATABASE test;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+

Consulte Sección 13.5.4.4, “Sintaxis de .

es similar, pero muestra el comando para crear una tabla dada. Las definiciones de columnas indican cualquier especificación del conjunto de caracteres, y las opciones de tabla incluyen información del conjunto de caracteres.

Consulte Sección 13.5.4.5, “Sintaxis de .

El comando muestra la colación de las columnas de una tabla cuando se invoca como . Columnas con tipos de datos , , o tienen colaciones no- . Tipos numéricos y otros tipos no-carácter tiene colaciones . Por ejemplo:

mysql> SHOW FULL COLUMNS FROM person\G
*************************** 1. row ***************************
     Field: id
      Type: smallint(5) unsigned
 Collation: NULL
      Null: NO
       Key: PRI
   Default: NULL
     Extra: auto_increment
Privileges: select,insert,update,references
   Comment:
*************************** 2. row ***************************
     Field: name
      Type: char(60)
 Collation: latin1_swedish_ci
      Null: NO
       Key:
   Default:
     Extra:
Privileges: select,insert,update,references
   Comment:

El conjunto de caracteres no es parte de lo que se muestra. (El nombre del conjunto de caracteres está implícito en el nombre de la colación.)

Consulte Sección 13.5.4.3, “Sintaxis de .