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.

È stato utile?

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) = ''
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top