2009-10-21 23 views
4

这里是什么,我试图做一个例子:的SQL Server:如何对待空值为零

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 

当S1.OrderValue,S2.OrderValue或S3.OrderValue为空,然后OrderValue也变为空。在这种情况下,我希望SQL Server将空值视为0。我怎样才能做到这一点?

回答

3

合并返回第一个非空值。

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

使用ISNULL(S1.ORDERVALUE,0)

10

使用ISNULL函数,如

isnull(s1.ordervalue,0) 

如果该值是无效时,它使用你作为第二所提供的替代值值。

3

使用T-SQL Coalesce强制非空的答案。例如:

COALESCE(S1.OrderValue, 0) 

...将采用OrderValue值,除非它为NULL,在这种情况下采用0。

3

您可以使用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 

返回以下结果:从这里(http://www.craigsmullins.com/ssu_0899.htm

采取

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 

实施例

相关问题