función escalar COLLATION_KEY

La función COLLATION_KEY devuelve una serie binaria de longitud variable que representa la clave de clasificación del argumento en la clasificación especificada.

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCOLLATION_KEY( expresión de cadena, nombre-de-la-colación,entero)

El esquema es SYSIBM.

El resultado de COLLATION_KEY en una cadena se puede comparar en forma binaria con el resultado de COLLATION_KEY en otra cadena para determinar su orden dentro del nombre de intercalación especificado. Para que la comparación sea significativa, los resultados de COLLATION_KEY deben ser del mismo nombre de intercalación.
expresión-serie
Expresión que devuelve un carácter o una cadena gráfica que no es un LOB para el que se debe determinar la clave de intercalación. Si string-expression es una cadena de caracteres, no debe ser FOR BIT DATA. Si la expresión de cadena no está en Unicode UTF-16 (CCSID 1200), se convierte a Unicode UTF-16 antes de obtener la clave de clasificación correspondiente. La longitud de la expresión de cadena no debe exceder los 32704 bytes de la representación de la e UTF-16.
nombre-de-la-colación
Una constante de cadena o una variable de cadena de host que no sea una cadena binaria, CLOB o DBCLOB. collation-name especifica la intercalación que se utilizará al determinar la clave de intercalación. Si el nombre de la clasificación no es un valor EBCDIC, se convierte a EBCDIC. La longitud del nombre de la clasificación debe estar en el rango de 1 a 255 bytes de la representación EBCDIC. El valor de collation-name no distingue entre mayúsculas y minúsculas y debe ser una configuración de intercalación válida de "ruta corta" justificada a la izquierda para el parámetro CUNBOPRM_Collation_Keyword en el área CUN4BOPR. Para obtener información detallada sobre la configuración de la "ruta corta" en el parámetro CUNBOPRM_Collation_Keyword, consulte Descripción de los parámetros en el área CUNBOPRM.

El valor de la variable host no debe ser nulo. Si la variable host tiene una variable indicadora asociada, el valor de la variable indicadora no debe indicar un valor nulo. el nombre de la compilación debe estar justificado a la izquierda dentro de la variable de host. También debe rellenarse a la derecha con espacios en blanco si la longitud es menor que la de la variable anfitriona y la variable anfitriona es un tipo de datos CHAR o GRAPHIC de longitud fija.

el nombre de la compilación tiene el formato de una especificación de CUN4BOPR_Collation_Keyword. Debe especificar un valor que sea aceptable para el parámetro CUNBOPR_ z/OS® _Keyword.

La siguiente tabla enumera algunos valores admitidos:
Tabla 1. Clasificación Palabras clave Referencia
Nombre del atributo Clave Valores posibles
Entorno local L.R.V <configuración regional>
Strength S 1, 2, 3, 4, I, D
Nivel de caso K X, O, D
Caso_Primero C X, L, U, D
Alternativo A N, S, D
Variable_Top T <dígitos hexadecimales>
Normalización N X, O, D
Francés F X, O, D
Hinayana H X, O, D
La siguiente tabla describe las abreviaturas de las palabras clave de cotejo:
Abreviatura
Definición
D
valor por omisión
O
on
X
desactivado
1
primario
2
secundario
3
TERCIARIO
4
cuaternario
I
Idéntico
S
cambiado
N
no ignorable
L
primero lo más bajo
U
superior-primero
Los siguientes ejemplos muestran palabras clave que utilizan las especificaciones anteriores:
'UCA400R1_AS_LSV_S3_CU'
UCA versión 4.0.1; ignora espacios, puntuación y símbolos; utiliza las convenciones lingüísticas suecas; utiliza mayúsculas al principio de la palabra; compara mayúsculas y minúsculas.
'UCA400R1_AN_LSV_S3_CL_NO'
UCA versión 4.0.1; no ignore los espacios, la puntuación y los símbolos; utilice las convenciones lingüísticas suecas; utilice primero la minúscula (o no establezca que signifique lo mismo, ya que la minúscula se utiliza en la mayoría de las configuraciones regionales como valor predeterminado); normalización activada; compare distinguiendo mayúsculas y minúsculas.
entero
Un valor entero que especifica el atributo de longitud del resultado. Si se especifica, el valor debe ser una constante entera en el rango de 1 a 32704.
Si no se especifica la longitud, el atributo de longitud del resultado se determina de la siguiente manera:
expresión-serie Atributo de longitud del resultado
CHAR(n) o VARCHAR(n) MIN (VARBIN ARY(12n ), 32704)
GRAPHIC(n) o VARGRAPHIC(n) MIN (VARBIN ARY(12n ), 32704)

Independientemente de si se especifica la longitud, la longitud de la clave de intercalación debe ser menor o igual que el atributo de longitud del resultado. La longitud del resultado real de la clave de cotejo es aproximadamente seis veces la longitud de la expresión de cadena, donde la longitud de la expresión de cadena está en representación de bytes Unicode. Para ciertos nombres de intercalación, como " UCA410_LKO_RKR " (para intercalación coreana), el atributo de longitud predeterminado del resultado, 12n, podría no ser lo suficientemente grande y se devolverá un error. Para evitar este error, el atributo de longitud del resultado debe especificarse explícitamente con una constante mayor. Para el atributo de longitud adecuado del resultado, consulte Descripción de los parámetros en el área CUNBOPRM para obtener información sobre las consideraciones de longitud del búfer de destino para los servicios de intercalación.

El resultado puede ser nulo; si el primer argumento es nulo, el resultado es el valor nulo.

La función COLLATION_KEY utiliza los servicios de clasificación Unicode en z/OS para devolver la clave de clasificación. Consulte Configuraciones regionales admitidas para la intercalación para obtener una lista de las versiones de intercalación admitidas.

Si los servicios de clasificación Unicode no están disponibles cuando se ejecuta la función COLLATION_KEY, se devuelve un error.

Ejemplo 1 : La siguiente consulta ordena a los empleados por sus apellidos utilizando el algoritmo de ordenación Unicode predeterminado ( V4.0.1(UCA ), ignorando los espacios, la puntuación y los símbolos, utilizando las convenciones lingüísticas suecas y sin comparar mayúsculas y minúsculas:
   SELECT FIRSTNAME, LASTNAME 
     FROM DSN8C10.EMP
     ORDER BY COLLATION_KEY(LASTNAME, 'UCA400R1_AS_LSV_S2');
Ejemplo 2 : La siguiente consulta utiliza la función COLLATION_KEY en la columna LASTNAME y la columna SALES_PERSON para obtener las claves de ordenación del mismo nombre de clasificación con el fin de hacer una comparación culturalmente correcta. Encuentra los departamentos de los empleados en Quebec:
   SELECT E.WORKDEPT 
     FROM EMPLOYEE AS E INNER JOIN SALES AS S
     ON COLLATION_KEY(E.LASTNAME, 'UCA400R1_LFR_RCA') =
                      COLLATION_KEY(S.SALES_PERSON, 'UCA400R1_LFR_RCA')
     WHERE S.REGION = 'Quebec';
Ejemplo 3 : Crear un índice EMPLOYEE_NAME_SORT_KEY para la tabla EMPLOYEE basado en la función incorporada COLLATION_KEY con el nombre de intercalación « UCA410_LDE » adaptado para alemán.
   CREATE INDEX EMPLOYEE_NAME_SORT_KEY
     ON EMPLOYEE (COLLATION_KEY(LASTNAME, 'UCA410_LDE', 600),
                  COLLATION_KEY(FIRSTNAME, 'UCA410_LDE', 600),
                  ID);