SQL Server 2008-在列为null时设置值
我正在SQL Server 2008数据库上执行SELECT语句SQL Server 2008-在列为null时设置值,sql,sql-server,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, N
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
时返回此静态值,以便您使用该函数
SELECT
Name
, DOB
, COALESCE(Address1, 'NA')
, COALESCE(Address2, 'NA')
, COALESCE(City, 'NA')
, COALESCE(State, 'NA')
, COALESCE(Zip, 'NA')
FROM Users
尝试:
正如其他人所指出的,联合也是一种选择:
COALESCE(expression, expression2, expression3)
返回第一个非空值
这里有一篇详细的文章描述了这些差异:
使用
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
完全相同,只是它可以接受两个以上的参数。从左到右检查参数,并返回第一个非空值。值必须是相同的类型。在sql server 2008中,有两个函数可以用另一个值替换NULL值
SELECT
Name, DOB, Address1,
coalesce(Address2,'NA'), coalesce(City,'NA'),
coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users
1。ISNULL函数需要两个参数:要检查的值和null值的替换
ISNULL(值,替换)
2.COALESCE函数的工作原理稍有不同COALESCE将接受任意数量的参数并返回第一个非空值,我更喜欢COALESCE而不是ISNULL,因为它符合ANSI标准,而ISNULL则不符合
合并(值1、值1、值3、值n、替换)
我希望这对您有用。在SQL Server中处理NULL 什么是空的
- NULL表示没有结果或未知
- NULL不等于NULL本身
- NULL值与空值或零值不同
- NULL是排序顺序中的最小值
- 执行group by时,NULL被视为相等李>
- 如果GROUPBY子句中的列包含NULL行,则这些行将被分组到一个组中
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
SELECT
Name, DOB, Address1,
coalesce(Address2,'NA'), coalesce(City,'NA'),
coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users