Sql 当一列为空时,则从另一列获取数据

Sql 当一列为空时,则从另一列获取数据,sql,Sql,希望你能帮忙。不显示整个查询,因为我认为这不是必需的,但希望尝试获取查询,以查看“street”中是否有空值,然后查看“free address”并将结果放入其中。我猜它包含一个case表达式或concat 当前结果 SELECT IdNum street free address from ID IdNum street free address 1 stack over flow n

希望你能帮忙。不显示整个查询,因为我认为这不是必需的,但希望尝试获取查询,以查看“street”中是否有空值,然后查看“free address”并将结果放入其中。我猜它包含一个case表达式或concat

当前结果

SELECT

IdNum
street
free address

from ID


IdNum          street                  free address
  1          stack over flow               null
  2             null                   stack exchange
  3           downing street               null
所需结果-注意,无需显示“地址”列,仅用于演示

 IdNum          street                    free address
   1         stack over flow                  null
   2         stack exchange                stack exchange
   3         downing street                   null
非常感谢您的帮助,
COALESCE()
函数执行以下操作:

SELECT IdNum,
       COALESCE(street, free_address) as street,
       free_address
FROM ID;
注意:
ID
是表的奇怪名称,
free address
不是有效的列名(因为空格)

COALESCE()
基本上是所有数据库中可用的ANSI标准函数。
COALESCE()
函数执行以下操作:

SELECT IdNum,
       COALESCE(street, free_address) as street,
       free_address
FROM ID;
注意:
ID
是表的奇怪名称,
free address
不是有效的列名(因为空格)

COALESCE()
基本上是所有数据库中可用的ANSI标准函数。

使用
COALESCE()
函数,它可以用您选择的替代值替换
NULL
值:

SELECT IdNum, COALESCE(street, `free address`) AS street, `free address`
FROM ID
使用
COALESCE()
函数,该函数可以用您选择的替代值替换
NULL
值:

SELECT IdNum, COALESCE(street, `free address`) AS street, `free address`
FROM ID

您可以使用
CASE
COALESCE
或(在SQL Server中)
ISNULL

SELECT IdNum,
       CASE WHEN street IS NULL THEN free_address ELSE street END as street,
       free_address
FROM ID;

SELECT IdNum,
       COALESCE(street, free_address) as street,
       free_address
FROM ID;

SELECT IdNum,
       ISNULL(street, free_address) as street,
       free_address
FROM ID;

您可以使用
CASE
COALESCE
或(在SQL Server中)
ISNULL

SELECT IdNum,
       CASE WHEN street IS NULL THEN free_address ELSE street END as street,
       free_address
FROM ID;

SELECT IdNum,
       COALESCE(street, free_address) as street,
       free_address
FROM ID;

SELECT IdNum,
       ISNULL(street, free_address) as street,
       free_address
FROM ID;

根据您正在使用的数据库,您可以使用
ISNULL
NVL
IFNULL
COALESCE


在这里选择正确的一个:

根据您正在使用的数据库,您可以使用
ISNULL
NVL
IFNULL
COALESCE


在此处选择正确的选项:

如果使用SQL Server,可以使用以下选项

Select [IdNum], 
Case 
When [street] Is Null AND [free address] Is Not Null 
Then [free address] else [street] END As 'street',
[free address]
from ID

如果使用SQL Server,则可以使用以下命令

Select [IdNum], 
Case 
When [street] Is Null AND [free address] Is Not Null 
Then [free address] else [street] END As 'street',
[free address]
from ID

Isnull(street,freemaddress)将正常工作lll(street,freemaddress)将正常工作非常感谢所有对此做出贡献的人,我完全想过头了!感谢的最好方式是接受正确的答案。非常感谢所有对此做出贡献的人,我完全想得太多了!感谢的最好方式是接受正确的答案。