swa*_*eck 11
根据 SQL 标准(适用于多种风格的 SQL),您可以使用该COALESCE()
函数:
SELECT
colB = COALESCE (colA, (colB1 + colB2))
FROM theTable;
Run Code Online (Sandbox Code Playgroud)
或一个CASE
表达式(它不是那么优雅,但可用于更复杂的条件):
SELECT
colB = CASE WHEN colA IS NOT NULL
THEN colA
ELSE colB1 + colB2
END
FROM theTable;
Run Code Online (Sandbox Code Playgroud)
使用 T-SQL(适用于 Sybase 和 Microsoft SQL Server)
SELECT
colB = ISNULL (colA, (colB1 + colB2))
FROM theTable;
Run Code Online (Sandbox Code Playgroud)
但是,您没有告诉我们任何保证colB1
或colB2
将始终具有价值。如果其中任何一个是,NULL
那么一切都会是NULL
。如果是这种情况,那么您可以COALESCE
将条件链接起来,看起来像
colB = COALESCE(colA, (colB1 + colB2),0)
Run Code Online (Sandbox Code Playgroud)
或使用 ISNULL
colB = ISNULL(ISNULL(colA, (colB1 + colB2)),0)
Run Code Online (Sandbox Code Playgroud)
如果您不想在结果中使用它,而是在 a WHERE
orHAVING
条件中使用它,则不需要更改。任何一个:
WHERE colB = COALESCE (colA, (colB1 + colB2))
Run Code Online (Sandbox Code Playgroud)
或者:
WHERE colB = CASE WHEN colA IS NOT NULL
THEN colA
ELSE colB1 + colB2
END
Run Code Online (Sandbox Code Playgroud)
但你还有一个选择:
WHERE ( colB = colA
OR colA IS NULL AND colB = colB1 + colB2
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12504 次 |
最近记录: |