Constantes
Una constante (a veces llamada un literal) especifica un valor. Las constantes se clasifican como constantes nulas, constantes de serie, constantes numéricas, constantes de fecha y hora o constantes booleanas. Las constantes numéricas pueden clasificarse en categorías menores, como entero, coma flotante, decimal o coma flotante decimal. Las constantes de serie se distribuyen en las categorías de carácter, gráfica o binaria.
Todas las constantes, excepto las constantes nulas, tienen el atributo NOT NULL.
Un valor de cero negativo en una constante numérica (-0) indica el mismo valor que un cero sin el signo (0).
SELECT * FROM CAMP_DB_ROSTER
WHERE AGE > CAST(14 AS YOUTH)
SELECT * FROM CAMP_DB_ROSTER
WHERE CAST(AGE AS INTEGER) > 14
SELECT * FROM CAMP_DB_ROSTER
WHERE AGE > 14
Constantes nulas (NULL)
La constante nula indica el valor nulo. La constante nula no tiene ningún tipo de datos. El tipo de datos de la palabra clave NULL lo proporciona el contexto en el que se utiliza, o puede utilizar CAST para asignar un tipo de datos.
Constantes enteras
Una constante entera especifica un entero en forma de número, con signo o sin signo, con un máximo de 19 dígitos que no incluye ninguna coma decimal. El tipo de datos de una constante entera es entero grande si su valor está comprendido en el rango de un entero grande. El tipo de datos de una constante entera es un entero superior si su valor se encuentra fuera del rango de un entero grande, pero está comprendido en el rango de un entero superior. Una constante definida fuera del rango de valores enteros superior se considera una constante decimal.
Tenga en cuenta que la representación literal más pequeña de una contante de entero largo es -2.147.483.647 y no -2.147.483.648, que es el límite para valores enteros. De manera similar, la representación literal más pequeña de una constante entera grande es -9.223.372.036.854.775.807 y no -9.223.372.036.854.775.808, que es el límite para valores de entero grande.
64 -15 +100 32767 720176 12345678901
En los diagramas de sintaxis, el término entero
se utiliza para una constante entera grande que no debe incluir un signo.
Constantes de coma flotante
Una constante de coma flotante especifica un número en coma flotante como dos números separados por una E. El primer número puede incluir un signo y un separador decimal; el segundo número puede incluir un signo, pero no un separador decimal. El tipo de datos de una constante de coma flotante es de precisión doble. El valor de la constante es el producto del primer número y la potencia de 10 especificada por el segundo número; este valor debe estar dentro del rango de los números de coma flotante. El número de bytes de la constante no debe exceder de 30.
15E1 2.E5 2.2E-1 +5.E+2
Constantes decimales
Una constante decimal es un número con o sin signo de 31 dígitos de longitud como máximo y que incluye una coma decimal o no está comprendido dentro del rango de enteros binarios. Debe estar comprendido en el rango de números decimales. La precisión es el número total de dígitos (incluyendo los ceros iniciales y de cola); la escala es el número de dígitos situados a la derecha de la coma decimal (incluyendo los ceros de cola).
25.5 1000. -15. +37589.3333333333
Constantes de coma flotante decimal
No hay ninguna constante de coma flotante decimal excepto los valores especiales de coma flotante decimal, que se interpreta como DECFLOAT(34).
SNAN -INFINITY
CAST ('snan' AS DECFLOAT)
CAST ('INF' AS DECFLOAT)
CAST ('Nan' AS DECFLOAT)
Todos los valores no especiales se interpretan como constantes decimales, de coma flotante o entero, con arreglo a las normas especificadas anteriormente. Para obtener un valor de coma flotante decimal numérico, utilice la función de conversión DECFLOAT con una constante de serie de caracteres. No es recomendable utilizar constantes de coma flotante como argumentos para la función DECFLOAT, ya que la coma flotante no es exacta y el valor de coma flotante decimal puede resultar diferente de los caracteres de dígito decimales que componen el argumento. En su lugar, utilice constantes de caracteres como argumentos para la función DECFLOAT.
Por ejemplo, DECFLOAT('6.0221415E23', 34) devuelve el valor de coma flotante decimal 6.0221415E+23, pero DECFLOAT(6.0221415E23, 34) devuelve el valor de coma flotante decimal 6.0221415000000003E+23.
Constantes de series de caracteres
- Secuencia de caracteres empieza y termina con el delimitador de serie apóstrofo ('). El número de bytes comprendido entre los delimitadores de serie no puede ser mayor que 32672. Cuando la unidad de serie de entorno es CODEUNITS32, el número de unidades de código no puede ser mayor que 8168. Se utilizan dos delimitadores de serie consecutivos para representar un delimitador de serie en la serie de caracteres. Dos delimitadores de serie consecutivos que no están contenidos en una serie representan la serie vacía.
- X seguida de una secuencia de caracteres que empieza y termina con un delimitador de serie. Este formato de constante de serie de caracteres también se denomina constante hexadecimal. Los caracteres entre los delimitadores de serie deben ser un número par de dígitos hexadecimales. Los espacios en blanco entre los delimitadores de serie se ignoran. El número de dígitos hexadecimales no debe exceder los 32.672. Cuando la unidad de serie de entorno es CODEUNITS32, el número de unidades de código que representa la constante hexadecimal no puede ser mayor que 8168. Un dígito hexadecimal es un dígito 0 al 9 o cualquiera de las letras A a F (mayúsculas o minúsculas). Según los convenios de notación hexadecimales, cada par de dígitos hexadecimales representa un carácter. Este formato de constante de serie de caracteres le permite especificar caracteres que no tienen representación de teclado.
- U& seguida de una secuencia de caracteres que empieza y termina con un delimitador de serie y que está seguida opcionalmente de la cláusula UESCAPE. Este formato de constante de serie de caracteres también se denomina constante de serie Unicode. El número de bytes entre los delimitadores de serie no puede ser superior a 32.672. Cuando la unidad de serie de entorno es CODEUNITS32, el número de unidades de código que representa la constante de serie Unicode no puede ser mayor que 8168. La constante de serie Unicode se convierte de UTF-8 a la página de códigos de sección durante la compilación de sentencia. Se utilizan dos delimitadores de serie consecutivos para representar un delimitador de serie dentro de la serie de caracteres. Se utilizan dos caracteres de escape de Unicode consecutivos para representar un carácter de escape de Unicode en la serie de caracteres, pero estos caracteres cuentan como un carácter cuando se calculan las longitudes de las constantes de tipo carácter. Dos delimitadores de serie consecutivos que no están contenidos en una serie representan la serie vacía. Dado que un carácter en UTF-8 puede estar en el rango de 1 a 4 bytes, una constante de serie de Unicode de la longitud máxima puede representar en realidad menos de 32.672 caracteres.
Un carácter se puede expresar mediante su carácter tipográfico (glifo) o su elemento de código Unicode. El elemento de código de un carácter Unicode está en el rango de X'000000' a X'10FFFF'. Para expresar un carácter Unicode mediante el elemento de código, utilice el carácter de escape de Unicode seguido de 4 dígitos hexadecimales o el carácter de escape de Unicode seguido de un signo más (+) y 6 dígitos hexadecimales. El carácter de escape de Unicode por omisión es la barra inclinada invertida (\), pero se puede especificar un carácter diferente con la cláusula UESCAPE. La cláusula UESCAPE se especifica como la palabra clave UESCAPE seguida de un carácter individual entre delimitadores de serie. El carácter de escape de Unicode no puede ser un signo más (+), unas comillas dobles ("), unas comillas simples ('), un espacio en blanco ni ninguno de los caracteres de 0 a 9 o de A a F, en mayúsculas o minúsculas (SQLSTATE 42604). Un ejemplo de los dos modos en que se puede especificar la letra latina A mayúscula como elemento de código de Unicode es \0041 y \+000041.
El valor de una constante se convierte siempre en la página de códigos de la base de datos cuando se vincula con la base de datos. Se considera que está en la página de códigos de la base de datos. Por lo tanto, si se utiliza en una expresión que combina una constante con una columna FOR BIT DATA y cuyo resultado es FOR BIT DATA, el valor de la constante no se convertirá desde su representación de página de códigos de base de datos.
'12/14/1985' '32' 'DON''T CHANGE' ''
X'FFFF' X'46 72 61 6E 6B'
U&'\0141ód\017A is a city in Poland' U&'c:\\temp' U&'@+01D11E' UESCAPE '@'
La serie situada más a la derecha en la segunda línea del ejemplo representa el patrón VARCHAR de la serie ASCII Frank. La última línea corresponde a:
Lodz es una ciudad en Polonia, c:\temp, y un único carácter que representa el símbolo musical G clef.
Constantes de series gráficas
- Constantes de serie gráfica UTF-16 BE
Una serie gráfica UTF-16 BE hexadecimal que especifica que también es compatible una constante de serie gráfica UTF-16 BE de longitud variable. El formato de una constante de serie gráfica UTF-16 BE hexadecimal es: UX seguido de una secuencia de caracteres que empieza y acaba con un apóstrofo. Los caracteres que se encuentran entre los apostrofes deben ser un múltiplo par de cuatro dígitos hexadecimales. El número de dígitos hexadecimales no debe superar los 16336; en caso contrario, se devuelve un error (SQLSTATE 54002). Si una constante de serie gráfica UTF-16 BE hexadecimal se ha formado de forma incorrecta, se devuelve un error (SQLSTATE 42606). Cada grupo de cuatro dígitos representa un único carácter gráfico UTF-16 BE.
Ejemplo:
representa el patrón VARGRAPHIC de la serie ASCIIUX'0042006F006200620079'
Bobby
.
- Bases de datos que no son de Unicode
- En una base de datos que no sea Unicode, una constante de serie gráfica consta de una secuencia de caracteres de doble byte que empieza y termina con un apóstrofo de un único byte ('), precedido de un G o N de byte único. Los caracteres comprendidos entre los apóstrofos han de representar un número par de bytes y la longitud de la serie gráfica no puede superar los 16336 bytes dobles. El apóstrofo no debe aparecer como parte de un carácter MBCS para que se considere como delimitador. Por ejemplo:
G'double-byte character string' N'double-byte character string'
- bases de datos Unicode
- En una base de datos de Unicode, una constante de secuencia gráfica consiste de una secuencia de caracteres que comienza y termina con un apóstrofo ('), y que va precedido por un carácter G o N. Las unidades de secuencia de valores constantes se determinan mediante las unidades de la secuencia por omisión del entorno. Los caracteres entre apóstrofos se convierten al código de la página 1200 y la longitud de la serie gráfica no debe exceder los 16336 bytes dobles. Cuando la unidad de la serie de entorno es CODEUNITS32, el número de unidades de código no debe exceder los 8168.
En una base de datos Unicode, también se da soporte a una constante de serie gráfica hexadecimal que especifica una serie gráfica de longitud variable. El formato de una constante de serie gráfica hexadecimal es: GX seguido por una secuencia de caracteres que empieza y termina por un apostrofe. Los caracteres que se encuentran entre los apostrofes deben ser un múltiplo par de cuatro dígitos hexadecimales. El número de dígitos hexadecimales no debe exceder los 32.672. Cuando la unidad de la secuencia del entorno es CODEUNITS32, el número de unidades de código que la constante de la secuencia gráfica hexadecimal representa no debe exceder de 8 168; de lo contrario se devuelve un error (SQLSTATE 54002). Si el formato de la constante de serie gráfica hexadecimal no es correcto, se devuelve un error (SQLSTATE 42606). Cada grupo de cuatro dígitos representa un único carácter gráfico. En una base de datos Unicode, sería un único carácter gráfico UCS-2 .
GX'FFFF'
representa el patrón de bits '1111111111111111' en una base de datos Unicode. GX'005200690063006B'
representa el patrón VARGRAPHIC de la serie ASCII Ricken una base de datos Unicode.
Restricciones de serie binaria
Una constante de serie binaria especifica una serie binaria de longitud variable de tipo VARBINARY.
Una constante de serie binaria se forma especificando BX seguido de una secuencia de caracteres que empieza y finaliza con un delimitador de serie. Los caracteres entre los delimitadores de serie deben ser un número par de dígitos hexadecimales. El número de dígitos hexadecimales no debe exceder los 32.672.
Un dígito hexadecimal es un dígito 0 al 9 o cualquiera de las letras A a F (mayúsculas o minúsculas). Bajo los convenios de notación hexadecimal, cada par de dígitos hexadecimales representa un byte. Esta representación es similar a la representación de la constante de tipo carácter que utiliza la forma X''. Sin embargo, la constante de serie binaria y la constante de serie de caracteres no son compatibles y la forma X'' no se puede utilizar para especificar una constante de serie binaria, igual que la forma BX'' no se puede utilizar para especificar una constante de serie de caracteres.
BX'0000'
BX'C141C242'
BX'FF00FF01FF'
Constantes de fecha y hora
Una constante de fecha y hora especifica una fecha, una hora o una indicación de fecha y hora.
DATE 'yyyy-mm-dd'
- El tipo de datos del valor es DATE.
TIME 'hh:mm:ss'
- o
TIME 'hh:mm'
- El tipo de datos del valor es TIME.
TIMESTAMP 'yyyy-mm-dd hh:mm:ss.nnnnnnnnnnnn'
- o
TIMESTAMP 'yyyy-mm-dd-hh.mm.ss.nnnnnnnnnnnn'
- donde el número de dígitos de segundos fraccionarios puede variar entre 0 y 12 y el carácter de punto se puede omitir si no hay segundos fraccionarios. El tipo de datos del valor es TIMESTAMP(p), donde p es el número de dígitos de los segundos fraccionarios.
Constantes de series gráficas UCS-2
En una base de datos Unicode, se da soporte a una serie gráfica hexadecimal UCS-2 que especifica una constante de serie gráfica UCS-2 de longitud variable. El formato de una constante de serie gráfica UCS-2 hexadecimal es: UX seguido por una secuencia de caracteres que empieza y termina por un apostrofe. Los caracteres que se encuentran entre los apostrofes deben ser un múltiplo par de cuatro dígitos hexadecimales. El número de dígitos hexadecimales no debe superar los 16336; en caso contrario, se devuelve un error (SQLSTATE 54002). Si el formato de la constante de serie gráfica UCS-2 hexadecimal no es correcto, se devuelve un error (SQLSTATE 42606). Cada grupo de cuatro dígitos representa un único carácter gráfico UCS-2.
UX'0042006F006200620079'
representa el patrón VARGRAPHIC de la serie ASCII Bobby.
Constantes booleanas
Una constante booleana especifica la palabra clave TRUE o FALSE, que representa el valor de verdad correspondiente. Se puede especificar un valor de verdad desconocido utilizando CAST(NULL AS BOOLEAN).