Select a column if other column is null

后端 未结 7 729
庸人自扰
庸人自扰 2020-12-08 13:14

I need to select a field called ProgramID from a table and if the ProgramID is NULL then I need to select the value in the InterimProgramID from the same table and alias it

相关标签:
7条回答
  • 2020-12-08 13:29

    You can use either the ISNULL function or the COALESCE function. They both do pretty much the same thing, however ISNULL only takes two parameters and COALESCE takes multiple parameters (returning the first non-null it encounters). Both try the first param, then the second, (and COALESCE continues on)

    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'
    
    0 讨论(0)
  • 2020-12-08 13:37
      select COALESCE ( ProgramID , InterimProgramID ) as 'ProgramID' 
    
    0 讨论(0)
  • 2020-12-08 13:38

    You need the ISNULL function.

    SELECT ISNULL(a, b)
    

    b gets selected if a is null.

    Also, you can use the WHEN/THEN select option, lookup in BOL. Essentially: its c switch/case block meets SQL.

    0 讨论(0)
  • 2020-12-08 13:38

    There is also:

    Select NVL(Column_A, Column_B) From 'schema'.'table_name'
    

    The NVL( ) function is available in Oracle, and not in MySQL or SQL Server. This function is used to replace NULL value with another value. It is similar to the IFNULL Function in MySQL and the ISNULL Function in SQL Server.

    https://www.1keydata.com/sql/sql-nvl.html

    0 讨论(0)
  • 2020-12-08 13:46

    Coalesce('zzz-' + ProgramID, InterimID) as programID will still ignore ProgramID even if you have a pretext value. It's a cool little function

    0 讨论(0)
  • 2020-12-08 13:49
    SELECT ProgramID
      FROM a_table
     WHERE ProgramID IS NOT NULL
    UNION
    SELECT InterimProgramID AS ProgramID
      FROM a_table
     WHERE ProgramID IS NULL;
    
    0 讨论(0)
提交回复
热议问题