2010-01-27 28 views
11

Tengo una tabla de SQL Server 2005 que tiene una columna de cadena en la que los valores vacíos a veces se almacenan como NULL y otras veces como una cadena vacía.Servidor SQL: cambiar una cadena vacía a una cadena vacía en la declaración de selección

Estoy haciendo un SELECT DISTINCT en esta columna y obtengo todos los valores distintos + NULL + cadena vacía. Pero lo que me gustaría es comprobar si el valor es NULL y devolver una cadena vacía en su lugar. Entonces, el conjunto de resultados sería todos los valores distintos + cadena vacía (si los valores fueran nulos o una cadena vacía).

Pero, ¿cómo puedo hacer esto en una instrucción SELECT?

Respuesta

25

Echa un vistazo a ISNULL() en el SQL Server Books Online.

Sintaxis:

ISNULL (check_expression , replacement_value) 

Ejemplo:

Select ISNULL(myfield1,'') from mytable1 
+0

Bueno, eso es fácil, ¡gracias! –

4

observar la función Coalesce. Se devuelve el primer valor que no sea aprobada en null.

COALESCE(myValue , '') 

Esto devolverá myValue si no es nulo, o una cadena vacía (''), si lo es.

Es menos detallado que el uso de muchas ISNULL() y IF cláusulas y, como tal, puede ser más fácil de leer.

+1

Una gran diferencia entre 'COALESCE' y' ISNULL' es que el tipo de retorno para 'COALESCE' está determinado por la prioridad de tipo de datos. Entonces 'SELECT COALESCE (null, 2, current_timestamp)' devolverá el valor '1900-01-03 00: 00: 00.000', y' SELECT COALESCE (null, 'a', current_timestamp) 'dará como resultado un error de conversión de tipo. –

+0

¿Por qué necesitarías usar 'ISNULL()' con una instrucción 'IF'? –

2
SELECT DISTINCT ISNULL(columnname, '') FROM table WHERE ... 
Cuestiones relacionadas