Sql 如果原始列为空,如何将SELECT值设置为等于其他列?
上述方法不起作用 基本上我想这样做: 我想选择两列:VendorId和VendorNumber 如果VendorNumber为空,我想显示VendorIdSql 如果原始列为空,如何将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 必须指定一个
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