![](/img/trans.png)
[英]Remove a registry if any column has a NULL value in SQL Server 2008
[英]SQL Server 2008 - Set a value when the column is null
我正在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
时返回此静态值。
您想使用COALESCE功能。
SELECT
Name
, DOB
, COALESCE(Address1, 'NA')
, COALESCE(Address2, 'NA')
, COALESCE(City, 'NA')
, COALESCE(State, 'NA')
, COALESCE(Zip, 'NA')
FROM Users
尝试:
ISNULL(expression, value_if_expression_is_null)
正如其他人所指出的那样,COALESCE也是一个选择:
COALESCE(expression, expression2, expression3)
返回第一个非空值
有一篇详细的文章描述了这里的差异:
http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html
在sql server 2008中,有两个函数可以将NULL值替换为另一个值
1. ISNULL函数需要两个参数:要检查的值和空值的替换
ISNULL(值,更换)
2.COALESCE函数工作有点不同COALESCE将接受任意数量的参数并返回第一个非NULL值,我更喜欢COALESCE而不是ISNULL'因为符合ANSI标准,而ISNULL没有。
COALESCE(value1,value1,value3,valueN,replacement)
我希望这对你有用。
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
SELECT
Name, DOB, Address1,
coalesce(Address2,'NA'), coalesce(City,'NA'),
coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users
使用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值。 值必须是相同的类型。
在SQL Server中处理NULL
什么是NULL?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.