sqlcode - DB2: ¿No permitirá la columna "NULL"?
sqlstate db2 codes (2)
DB2 está fuertemente tipado, por lo que debe decirle a DB2 qué tipo de columna es NULL:
select
...
cast(NULL as int) as column_A,
cast(NULL as varchar(128)) as column_B,
...
FROM
...
Parte de una consulta compleja que está ejecutando nuestra aplicación contiene las líneas: ... (consulta interna)
SELECT
...
NULL as column_A,
NULL as column_B,
...
FROM
...
Esta sintaxis de creación de columnas con valores nulos no está permitida en DB2, aunque está totalmente bien en MSSQL y Oracle DB. Técnicamente puedo cambiarlo a:
'''' as column_A,
'''' as column_B,
Pero esto no tiene exactamente el mismo significado y puede dañar nuestros resultados de cálculo. ¿Cómo puedo crear columnas con valores nulos en DB2 usando otra sintaxis?
Para Db2 LUW, desde la versión 9.7, puede (si lo desea) usar el valor NULL
sin convertirlo explícitamente en un tipo de datos en particular.
NULL
en sí mismo se lanzará implícitamente a VARCHAR(1)
. Esta página del centro de conocimiento mostrará lo que sucede en otros casos: Determinación de tipos de datos de expresiones sin tipo
Ejemplos
db2 "describe values ( NULL, + NULL, NULL || NULL )"
Column Information
Number of columns: 3
SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
449 VARCHAR 1 1 1
997 DECFLOAT 16 2 1
449 VARCHAR 508 3 1
y
db2 "describe values NULL, 1"
Column Information
Number of columns: 1
SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
497 INTEGER 4 1 1