full - ¿Cómo comprobar si no hay cadena vacía y no está vacía en el servidor SQL?
sql server descargar (8)
Coalesce plegará nulos en un valor predeterminado:
COALESCE (fieldName, '''') <> ''''
¿Cómo podemos verificar en un servidor SQL WHERE
si la columna no es nula y no la cadena vacía ( ''''
)?
Esta condición realizará una comprobación de "nulo, vacío o espacio en blanco", sin la manipulación innecesaria de cadenas de LTRIM
y RTRIM
.
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX(''%[^ ]%'', [Value]), 0) > 0
Puede usar cualquiera de estos para verificar null, espacios en blanco y cadenas vacías.
WHERE COLUMN <> ''''
WHERE LEN(COLUMN) > 0
WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '''') IS NOT NULL
Si solo quieres hacer coincidir "" como una cadena vacía
WHERE DATALENGTH(COLUMN) > 0
Si quieres contar cualquier cadena que consista completamente de espacios como vacíos
WHERE COLUMN <> ''''
Ambos no devolverán valores NULL
cuando se usen en una cláusula WHERE
. Como NULL
evaluará como UNKNOWN
para estos en lugar de TRUE
.
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES (''A''),
(''''),
('' ''),
(NULL);
SELECT *
FROM T
WHERE C <> ''''
Devuelve solo la única fila A
Es decir, las filas con NULL
o una cadena vacía o una cadena que consista completamente en espacios están excluidas por esta consulta.
Simplemente marque: donde valor> '''' - no nulo y no vacío
-- COLUMN CONTAINS A VALUE (ie string not null and not empty) :
-- (note: "<>" gives a different result than ">")
select iif(null > '''', ''true'', ''false''); -- false (null)
select iif('''' > '''', ''true'', ''false''); -- false (empty string)
select iif('' '' > '''', ''true'', ''false''); -- false (space)
select iif('' '' > '''', ''true'', ''false''); -- false (tab)
select iif(''
'' > '''', ''true'', ''false''); -- false (newline)
select iif(''xxx'' > '''', ''true'', ''false''); -- true
--
--
-- NOTE - test that tab and newline is processed as expected:
select ''x x'' -- tab
select ''x
x'' -- newline
Una manera fácil de hacer esto es:
where (field is not null and field <> '''')
Si no hay muchas filas o este campo no está indexado, puede usar:
where isnull(field,'''') <> ''''
de manera básica
SELECT *
FROM [TableName]
WHERE column_name!='''' AND column_name IS NOT NULL
WHERE NULLIF(your_column, '''') IS NOT NULL
Hoy en día (4.5 años después), para que sea más fácil de leer para un humano, simplemente usaría
WHERE your_column <> ''''
Si bien existe la tentación de hacer explícita la verificación nula ...
WHERE your_column <> ''''
AND your_column IS NOT NULL
... como lo demuestra @Martin Smith en la respuesta aceptada, realmente no agrega nada (y yo personalmente evito los nulos de SQL por completo hoy en día, ¡así que de todos modos no se aplicaría a mí!).