Testen für Leerzeichen in SQL Server
-
20-08-2019 - |
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.
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) = ''