En MS SQL-Server, que puede hacer:Cuál es el equivalente de PostgreSQL para ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Pero en PostgreSQL me sale un error de sintaxis. ¿Cómo emulo la funcionalidad ISNULL()
?
En MS SQL-Server, que puede hacer:Cuál es el equivalente de PostgreSQL para ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Pero en PostgreSQL me sale un error de sintaxis. ¿Cómo emulo la funcionalidad ISNULL()
?
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
O más idiomática:
SELECT coalesce(field, 'Empty') AS field_alias
+1 para 'coalesce'. (P.S. También puede hacerlo en MS SQL Server). –
Existen otros casos para usar IS NULL, por lo que es bueno saber ambos. –
Creo que vale la pena señalar que es 'coalesce' que está en SQL estándar, con' isnull' es una función específica de MS que esencialmente es 'coalesce' con solo dos parámetros. – GSerg
crear la siguiente función
CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
"is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'
Y que va a trabajar.
Puede crear diferentes versiones con diferentes tipos de parámetros.
Por favor, nadie hace esto. Utilice coalesce() para que su DBA no lo odie. – Jordan
Uso COALESCE()
lugar:
SELECT COALESCE(Field,'Empty') from Table;
Funciona muy parecido a ISNULL
, aunque proporciona una mayor funcionalidad. Coalesce devolverá el primer valor no nulo en la lista. Así:
SELECT COALESCE(null, null, 5);
retornos 5, mientras que
SELECT COALESCE(null, 2, 5);
devuelve 2
Coalesce a tomar un gran número de argumentos. No hay un máximo documentado. Probé 100 argumentos y tuvo éxito. Esto debería ser suficiente para la gran mayoría de las situaciones.
¿Cómo emulo la funcionalidad ISNULL()?
SELECT (Field IS NULL) FROM ...
Esto emula la funcionalidad exacta de isnull, no estoy seguro de por qué es downvoted – smackshow
@artur Usted no entiende cómo funciona isnull. – datashaman
La mejor respuesta para la pregunta, por supuesto. Esta expresión es el equivalente completo de ISNULL(). COALESCE() es muy inteligente e interesante de saber pero no puede realizar un ISNULL() mientras está cerrado. – Skrol29
Probar:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
Esto es bueno ya que cubre el caso cuando un campo de texto NO es nulo, sino también 'vacío'. – soulia
No, no puedes hacer eso en MSSQL. Ese código no se compilará. 'ISNULL' toma dos argumentos y devuelve el segundo; el primero es' nulo'; de lo contrario, el primero. – GSerg
@GSerg, tienes razón. arregló eso. –
Gserg y Byron sí se pueden ver aquí Ejemplo de mi PC isnull SELECT (a.FechaEntregada, '') como prueba de dbo.Amonestacion un https://msdn.microsoft.com/en-us/ library/ms184325.aspx – Juan