Sql 如果原始列为空,如何将SELECT值设置为等于其他列?

Sql 如果原始列为空,如何将SELECT值设置为等于其他列?,sql,tsql,case,Sql,Tsql,Case,上述方法不起作用 基本上我想这样做: 我想选择两列:VendorId和VendorNumber 如果VendorNumber为空,我想显示VendorId 我如何通过上面的查询实现这一点?查询基本上显示空值,而不是VendorID 必须指定一个ELSE,否则当VendorNumber不为空时,您将得到null: select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber from Table 您可以使用或简化:

上述方法不起作用

基本上我想这样做:

我想选择两列:VendorId和VendorNumber

如果VendorNumber为空,我想显示VendorId


我如何通过上面的查询实现这一点?查询基本上显示空值,而不是VendorID

必须指定一个
ELSE
,否则当
VendorNumber
不为空时,您将得到null:

select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber
from Table
您可以使用或简化:


您缺少
ELSE
,因此它在
VendorNumber
不为空的所有行中放置
null

select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber
from Table
这也可以写成:

SELECT TOP 10 VendorId,
    CASE 
        WHEN VendorNumber IS NULL 
        THEN VendorId
        ELSE VendorNumber
    END AS 'VendorNumber'
FROM    Table
试一试 选择前10名 文多里德, 合并(VendorNumber,VendorId)为VendorNumber 从表中试试这个

SELECT TOP 10 VendorId,
    Coalesce(VendorNumber, VendorId) AS 'VendorNumber'
FROM    Table

执行此操作的SQL函数是
coalesce()

这假设VendorId和VendorNumber是同一类型。否则,您可能需要添加一些转换。例如,如果VendorId是字符串,VendorNumber是数字:

SELECT TOP 10 VendorId, coalesce(VendorNumber, VendorId) as VendorNumber
FROM    Table
“Else”不见了

select top 10, VendorId, coalesce(cast(VendorNumber as varchar(255)), VendorId)
from Table

为什么要显示vendorid列两次?在代码中还需要其他内容。
SELECT TOP 10 VendorId, coalesce(VendorNumber, VendorId) as VendorNumber
FROM    Table
select top 10, VendorId, coalesce(cast(VendorNumber as varchar(255)), VendorId)
from Table
 SELECT TOP 10 VendorId,
        CASE 
            WHEN VendorNumber IS NULL 
            THEN VendorId
            ELSE VendorNumber
        END AS 'VendorNumber'
    FROM    Table