如果其他列为null,请选择一列

Ron*_*ald 44 sql t-sql sql-server

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

如何创建条件SELECT语句来执行此操作?

Pet*_*tai 79

您需要ISNULL/function运算符.

SELECT ISNULL(a, b)
Run Code Online (Sandbox Code Playgroud)

b如果a为null,则选中.

此外,您可以使用WHEN/THEN选项,在BOL中查找.基本上:它的c开关/ case块符合SQL.

  • MySQL等价物是IFNULL https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_ifnull (7认同)
  • PostgreSQL 等效项是 NULLIF https://www.postgresql.org/docs/current/functions-conditional.html#FUNCTIONS-NULLIF (5认同)
  • 及其`a || b`在javascript中 (2认同)
  • @PeterAronZentai 这并不意味着人们在寻找其他 SQL 变体的相同问题时不会发现这个问题。Postgres 的等价物实际上是 `COALESCE` (2认同)

Jus*_*ony 17

您可以使用ISNULL功能或COALESCE功能.它们都做了几乎相同的事情,但ISNULL只需要两个参数并COALESCE接受多个参数(返回它遇到的第一个非null).两个都尝试第一个参数,然后第二个,(和COALESCE继续)

DECLARE @IAMNULL VARCHAR
DECLARE @IAMNOTNULL VARCHAR
SET @IAMNOTNULL = 'NOT NULL'

SELECT ISNULL(@IAMNULL, @IAMNOTNULL)
--Output: 'NOT NULL'

DECLARE @IAMNULLALSO VARCHAR

SELECT COALESCE(@IAMNULL, @IAMNULLALSO, @IAMNOTNULL)
--Output: 'NOT NULL'
Run Code Online (Sandbox Code Playgroud)


pap*_*zzo 10

  select COALESCE ( ProgramID , InterimProgramID ) as 'ProgramID' 
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案似乎最好地回答了这个问题 (4认同)