SQL Server 2008 - 在列为空时设置值

时间:2012-06-27 16:48:31

标签: sql sql-server

我正在SQL Server 2008数据库上执行SELECT语句。

SELECT Name, DOB, Address1, Address2, City, State, Zip
FROM Users

但是,如果上述任何列对于特定行恰好是空的,我想将值NA放在列中。

通常会返回:

SMITH^JOHN, 1/1/1980, 5140 N 1ST ST, NULL, NOWHERE, WA, 98221
DOE^JANE, 5/5/1970, NULL, NULL, NULL, NULL, NULL

我想要归还的是:

SMITH^JOHN, 1/1/1980, 5140 N 1ST ST, NA, NOWHERE, WA, 98221
DOE^JANE, 5/5/1970, NA, NA, NA, NA, NA

但是,我不想实际更新数据库。我只希望SELECT语句在结果为NULL时返回此静态值。

7 个答案:

答案 0 :(得分:17)

您想使用COALESCE功能。

SELECT
    Name
,   DOB
,   COALESCE(Address1, 'NA')
,   COALESCE(Address2, 'NA')
,   COALESCE(City, 'NA')
,   COALESCE(State, 'NA')
,   COALESCE(Zip, 'NA')
FROM Users

答案 1 :(得分:5)

尝试:

ISNULL(expression, value_if_expression_is_null)

正如其他人所指出的,COALESCE也是一种选择:

COALESCE(expression, expression2, expression3)

返回第一个非空值

有一篇详细的文章描述了这里的差异:

http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html

答案 2 :(得分:5)

在sql server 2008中,有两个函数可以将 NULL 值替换为另一个值

<强> 1。 ISNULL 函数需要两个参数:要检查的值和空值的替换

<强> ISNULL(值,更换)

2.COALESCE 功能有点不同 COALESCE 会接受任意数量的参数并返回第一个非NULL值,我更喜欢COALESCE而不是ISNULL'因为符合ANSI标准,而ISNULL没有。

COALESCE(value1,value1,value3,valueN,替换)

我希望这对你有用。

答案 3 :(得分:2)

SELECT
  Name, DOB,
  (CASE WHEN Address1 IS NULL THEN 'NA' ELSE Address1 END) AS Address1,
  (CASE WHEN Address2 IS NULL THEN 'NA' ELSE Address2 END) AS Address2,
  ...
FROM Users

答案 4 :(得分:2)

SELECT 
  Name, DOB, Address1, 
  coalesce(Address2,'NA'), coalesce(City,'NA'), 
  coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users

答案 5 :(得分:1)

使用isnull

SELECT
    Name, 
    DOB, 
    isnull(Address1, 'NA') as [Address1], 
    isnull(Address2, 'NA') as [Address2], 
    isnull(City, 'NA') as [City], 
    isnull(State, 'NA') as [State], 
    isnull(Zip, 'NA') as [Zip]
FROM Users

你也可以使用coalesce,它与isnull完全相同,只是它可以使用两个以上的参数。从左到右检查参数,并返回第一个非null值。值必须是相同的类型。

答案 6 :(得分:0)

在SQL Server中处理NULL

什么是NULL?

  • NULL表示没有结果或未知。
  • NULL不等于NULL本身。
  • NULL值与空值或零值不同。
  • NULL是排序顺序中的最小值。
  • 执行group by时,
  • NULL被认为是相等的。
  • 如果Group By子句中的列包含NULL行,则这些行将分组为一个组。

Handling Null In SQL Server With Examples