Sql 如果其他列为空,请选择一列

Sql 如果其他列为空,请选择一列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从一个表中选择一个名为ProgramID的字段,如果ProgramID为NULL,那么我需要从同一个表中选择InterimProgramID中的值,并将其别名为ProgramID 如何生成条件SELECT语句来执行此操作?您需要ISNULL函数 SELECT ISNULL(a, b) 如果a为空,则选择b 此外,您还可以使用WHEN/THEN select选项,在BOL中查找。本质上:其c开关/外壳块符合SQL。您可以使用函数或函数。它们的作用几乎相同,但是ISNULL只接受两个参数,C

我需要从一个表中选择一个名为ProgramID的字段,如果ProgramID为NULL,那么我需要从同一个表中选择InterimProgramID中的值,并将其别名为ProgramID


如何生成条件SELECT语句来执行此操作?

您需要ISNULL函数

SELECT ISNULL(a, b)
如果
a
为空,则选择
b

此外,您还可以使用WHEN/THEN select选项,在BOL中查找。本质上:其c开关/外壳块符合SQL。

您可以使用函数或函数。它们的作用几乎相同,但是
ISNULL
只接受两个参数,
COALESCE
接受多个参数(返回它遇到的第一个非null参数)。两个参数都尝试第一个参数,然后是第二个参数(合并继续进行)


您还可以使用IFNULL函数

select IFNULL(ProgramId,interimId) as ProgramId
合并('zzz-'+ProgramID,InterimID)作为ProgramID仍然会忽略ProgramID,即使您有一个借口值。这是一个很酷的小功能

还有:

Select NVL(Column_A, Column_B) From 'schema'.'table_name'
NVL()函数在Oracle中可用,而在MySQL或SQL Server中不可用。此函数用于将空值替换为另一个值。它类似于MySQL中的IFNULL函数和SQL Server中的ISNULL函数


这个问题是关于SQL Server的,
IFNULL
不存在于该DBMS中,只有
ISNULL
MySQL等价物是IFNULL,而其在javascriptPostgreSQL中的
a | | b
等价物是null如果我的意思是该问题被严格标记为tsql的话
SELECT ProgramID
  FROM a_table
 WHERE ProgramID IS NOT NULL
UNION
SELECT InterimProgramID AS ProgramID
  FROM a_table
 WHERE ProgramID IS NULL;
select IFNULL(ProgramId,interimId) as ProgramId
Select NVL(Column_A, Column_B) From 'schema'.'table_name'