Frage

Ich habe einige leere Werte in meinem Tisch bekam, und ich kann nicht scheinen sie in einer IF-Anweisung zu fangen.

Ich habe versucht,

IF @value = '' und if @value = NULL und keiner fängt die Leerwerte. Gibt es eine Möglichkeit zu testen, ob ein varchar ganz Leerzeichen ist?

AHA! Es stellte sich heraus, dass ich für null falsch testete. Vielen Dank.

War es hilfreich?

Lösung

mit NULL zu vergleichen, verwenden Sie die IS NULL-Schlüsselwort.

--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;

--Instead of    

SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;

Andere Tipps

ltrim(rtrim(isNull(@value,''))) = ''

(LTRIM (RTRIM (@Value)) = '' sollte es tun.

, wenn die Länge (@value) = 0 oder @value null

Dabei gilt Länge (rtrim (ltrim (yourcolumnname))) = 0 OR yourcolumnname ist null

Rather dann übermäßige String-Manipulation mit LTRIM UND RTRIM Durchführung, suchen Sie einfach den Ausdruck für den ersten "Nicht-Raum".

SELECT
            *
    FROM
            [Table]
    WHERE
            COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0

Ich habe gerade einige Tests, und fand heraus, etwas Interessantes. Früher habe ich meine Anfragen wie so schreiben:

SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0

Aber Sie brauchen nicht wirklich für null zu überprüfen, alles, was Sie tun müssen, ist die Länge zu überprüfen, nachdem der Wert Trimmen.

SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0

Mit dieser Option können Unkraut aus Nullen sowie alle Spalten mit nur Leerraum.

Wie sich herausstellt, brauchen Sie nicht den Wert zu trimmen, da SQL Server ignoriert nachfolgende Leerzeichen, so alles, was Sie brauchen es eigentlich diese:     WÄHLEN *     VON TableA     WO LEN (Val)> 0

Sie haben Felder mit mehreren Leerzeichen (‘‚) so dass Sie bessere Ergebnisse, wenn Sie trimmen, dass:

where ltrim(yourcolumnname) = ''
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top