2009-10-21 9 views
4

Voici un exemple de ce que je suis en train de faire:SQL Server: Comment traiter comme des zéros nulls

Select 
S1.Name as S1Name, 
S1.Itemcontent as S1ItemContent, 
... 
S2.Name as S2Name, 
S2.Name as S2ItemContent, 
**(S1.OrderValue * 1000*1000 + S2.OrderValue*1000 + S3.OrderValue) as OrderValue** 
From (joining s1, s2 and s3 on a particular value) 
Order by OrderValue 

Lorsque S1.OrderValue, S2.OrderValue ou S3.OrderValue est un nul, alors OrderValue devient aussi nul. Je veux que SQL Server traite les valeurs nulles comme 0 dans ce cas. Comment puis-je faire ceci? Coalesce renvoie la première valeur non nulle.

Répondre

3

**(coalesce(S1.OrderValue,0) * 1000 + coalesce(S2.OrderValue,0)*1000 + coalesce(S3.OrderValue,0)) as OrderValue 
2

Utilisez ISNULL (S1.ORDERVALUE, 0)

10

Utilisation de la fonction isNull, tels que

isnull(s1.ordervalue,0) 

Si la valeur est nulle, il utilise la valeur de remplacement que vous avez fournie en tant que deuxième valeur.

3

Utilisation T-SQL Coalesce pour forcer une réponse non nulle. Par exemple:

COALESCE(S1.OrderValue, 0) 

... prendra la valeur OrderValue sauf si elle est NULL, auquel cas 0 est pris.

3

Vous pouvez utiliser une instruction case.

SELECT title, price, 
     Budget = CASE price 
     WHEN price > 20.00 THEN 'Expensive' 
      WHEN price BETWEEN 10.00 AND 19.99 THEN 'Moderate' 
      WHEN price < 10.00 THEN 'Inexpensive' 
      ELSE 'Unknown' 
     END, 
FROM titles 

Renvoie les éléments suivants:

Title     Price  Budget 
---------------------- ----------- --------------- 
Cooking with Computers 11.95  Moderate 
Straight Talk About Co 19.99  Moderate 
The Busy Executive's D 19.99  Moderate 
You Can Combat Compute 2.99  Inexpensive 
Silicon Valley Gastron 19.99  Moderate 
The Gourmet Microwave 2.99  Inexpensive 
But Is It User Friendl 22.95  Expensive 
Secrets of Silicon Val 20.00  Moderate 
Net Etiquette   (null)  Unknown 

Exemple tiré d'ici (http://www.craigsmullins.com/ssu_0899.htm)

Questions connexes