Test per spazi bianchi in SQL Server
-
20-08-2019 - |
Domanda
Ho alcuni valori vuoti nella mia tabella e non riesco a prenderli in un'istruzione IF.
Ho provato
IF @value = ''
e if @value = NULL
e nessuno dei due rileva i valori vuoti. Esiste un modo per verificare se un varchar è interamente vuoto?
AHA! Ho scoperto che stavo testando null null. Grazie.
Soluzione
Per confrontare con NULL, utilizzare la parola chiave IS NULL.
--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;
--Instead of
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;
Altri suggerimenti
ltrim(rtrim(isNull(@value,''))) = ''
(LTRIM (RTRIM (@Value)) = '' dovrebbe fare il trucco.
se length (@value) = 0 o @value è null
where length (rtrim (ltrim (yourcolumnname))) = 0 O yourcolumnname è null
Invece di eseguire un'eccessiva manipolazione delle stringhe con LTRIM
AND RTRIM
, cerca nell'espressione la prima " non-space " ;.
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
Ho appena fatto alcuni test e ho scoperto qualcosa di interessante. Scrivevo le mie domande in questo modo:
SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0
Ma, in realtà, non è necessario verificare la presenza di null, è sufficiente verificare la lunghezza dopo il taglio del valore.
SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0
Questa selezione elimina i null e tutte le colonne con solo uno spazio bianco.
A quanto pare, non è necessario tagliare il valore perché SQL Server ignora gli spazi vuoti finali, quindi tutto ciò che serve è questo: SELEZIONA * DALLA Tabella A DOVE LEN (Val) & Gt; 0
Potresti avere campi con più spazi ('') in modo da ottenere risultati migliori se lo tagli:
where ltrim(yourcolumnname) = ''