Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008-在列为null时设置值_Sql_Sql Server - Fatal编程技术网

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

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

我正在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

时返回此静态值,以便您使用该函数

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