2010-01-27 2 views
11

Ich habe eine SQL Server 2005-Tabelle, die eine Zeichenfolge Spalte hat, in denen leere Werte manchmal als NULL und andere Male als eine leere Zeichenfolge gespeichert werden.SQL Server - Ändern einer Nullzeichenfolge in eine leere Zeichenfolge in Select Statement

Ich mache eine SELECT DISTINCT für diese Spalte und ich bekomme alle eindeutigen Werte + NULL + leere Zeichenfolge. Aber ich möchte überprüfen, ob der Wert NULL ist und stattdessen eine leere Zeichenfolge zurückgeben. Die Ergebnismenge wäre also alle verschiedenen Werte + leere Zeichenfolge (wenn irgendwelche Werte Null oder eine leere Zeichenfolge waren).

Aber wie kann ich dies in einer SELECT-Anweisung tun?

Antwort

25

Überprüfen Sie ISNULL() in der SQL Server Books Online.

Syntax:

ISNULL (check_expression , replacement_value) 

Beispiel:

Select ISNULL(myfield1,'') from mytable1 
+0

Nun, das ist einfach, danke! –

4

Blick auf die Coalesce Funktion. Es gibt den ersten nicht null Wert übergeben.

COALESCE(myValue , '') 

Dies wird myValue zurück, wenn es nicht null ist, oder eine leere Zeichenfolge (''), wenn es ist.

Es ist weniger ausführlich als mit vielen ISNULL() und IF Klauseln und als solche einfacher zu lesen.

+1

Ein großer Unterschied zwischen 'COALESCE' und' ISNULL' besteht darin, dass der Rückgabetyp für 'COALESCE' durch die Priorität des Datentyps bestimmt wird. So gibt 'SELECT COALESCE (null, 2, current_timestamp)' den Wert '1900-01-03 00: 00: 00.000' zurück und 'SELECT COALESCE (null,' a ', current_timestamp)' führt zu einem Typkonvertierungsfehler. –

+0

Warum sollten Sie 'ISNULL()' mit einer 'IF' Anweisung verwenden? –

2
SELECT DISTINCT ISNULL(columnname, '') FROM table WHERE ... 
Verwandte Themen