2010-01-27 7 views
11

J'ai une table SQL Server 2005 qui contient une colonne de chaîne dans laquelle les valeurs vides sont parfois stockées sous NULL et d'autres fois sous forme de chaîne vide.SQL Server - Modification d'une chaîne vide en chaîne vide dans une instruction select

Je fais un SELECT DISTINCT sur cette colonne et j'obtiens toutes les valeurs distinctes + NULL + chaîne vide. Mais ce que je voudrais, c'est vérifier si la valeur est NULL et retourner une chaîne vide à la place. Donc, le jeu de résultats serait toutes les valeurs distinctes + chaîne vide (si des valeurs étaient nulles ou une chaîne vide). Mais comment est-ce que je peux faire cela dans une instruction SELECT?

Répondre

25

Extrayez ISNULL() dans le SQL Server Books Online.

Syntaxe:

ISNULL (check_expression , replacement_value) 

Exemple:

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

Eh bien, c'est facile, merci! –

4

Regardez la fonction Coalesce. Il retourne la première non null valeur passée.

COALESCE(myValue , '') 

Cela renverra maValeur si elle est non nulle, ou une chaîne vide (''), si elle est.

Il est moins verbeux que d'utiliser de nombreuses clauses ISNULL() et IF et en tant que tel peut être plus facile à lire.

+1

Une grande différence entre 'COALESCE' et' ISNULL' est que le type de retour pour 'COALESCE' est déterminé par la priorité des types de données. Donc 'SELECT COALESCE (null, 2, current_timestamp)' retournera la valeur '1900-01-03 00: 00: 00.000', et' SELECT COALESCE (null, 'a', current_timestamp) 'provoque une erreur de conversion de type. –

+0

Pourquoi auriez-vous besoin d'utiliser 'ISNULL()' avec une instruction 'IF'? –

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