2011-01-24 18 views
15

¿Cómo puedo verificar si una columna está vacía o nula usando una declaración de selección de SQL?¿Cómo comprobar si una columna está vacía o nula utilizando la instrucción de selección de consulta SQL?

Por ejemplo, si quiero comprobar:

select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty 
+0

Quiero saber por ese PropertyValue, cómo hacerlo cuando quiera. – NoviceToDotNet

+0

¿Podría mostrarnos la definición de la tabla? –

+1

Si le entiendo correctamente, desea SELECCIONAR solo aquellos UserProfiles que no tienen establecido PropertyValue (NULL o no, ¿es correcto? –

Respuesta

30

hace esto lo que quieres?

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
    AND ( PropertyValue is NULL 
     or PropertyValue = ''); 
+10

Esto funciona genial. Sin embargo, si tienes una situación (como la tengo) donde una columna con espacios debe tratarse como vacía, entonces simplemente agrega LTRIM() y RTRIM(). Usando el ejemplo de Christian, esto sería 'o LTRIM (RTRIM (PropertyValue)) = '' '. – FumblesWithCode

+1

Me encanta. @FumblesWithCode - ¡Muy bien, dado su mango! – JosephDoggie

18

Aquí está una manera ligeramente diferente:

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
    AND (LEN(ISNULL(PropertyValue,'')) = 0) 
+0

Funciona como un campeón, gracias –

+0

Perfecto @DenisIvin –

+0

asignando una cadena vacía cuando es nulo y determinando la longitud del columna después de eso es genial. ¡Gracias! – OneLazy

6

Aquí es mi forma preferida para comprobar "si nulo o vacío":

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
AND NULLIF(PropertyValue, '') is null 

Ya que modifica el argumento de búsqueda (SARG) podría tener problemas de rendimiento porque podría no usar un índice existente en la columna PropertyValue.

Cuestiones relacionadas