Ale*_*x J 6 sql sql-server-2008
我曾多次使用COALESCE,但我想我从未遇到过这种特殊情况.假设每个@param1只有一行.
select @test = COALESCE (column1, 'default') FROM Table1 WHERE column3 = @param1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果column1的值为null,则在sql语句实际返回行时选择"default".如果@ param1没有匹配的记录怎么办?
让我们说我想总是有@test的默认值.以下是正确的还是有另一种方式?
select @test = COALESCE( (select column1 FROM Table1 WHERE column3 = @param1), 'default').
我推测,select @test = COALESCE (column1, 'default') FROM Table1 WHERE column3 = @param1即使它没有返回一行,也会包含'default'.不.
我想我之后也可以检查@test是否为NULL并分配默认值.
Mat*_*lie 10
你已经有效地提到了答案...... COALESCE在SELECT之后/之外使用,否则你永远不会实际分配一个值(这与分配NULL值不同)......
SELECT @test = NULL
SELECT @test = column1 FROM Table1 WHERE column3 = @param1
SELECT @test = COALESCE(@test, 'default')
Run Code Online (Sandbox Code Playgroud)
或者只是......
SELECT @test = COALESCE((SELECT column1 FROM Table1 WHERE column3 = @param1), 'default')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6551 次 |
| 最近记录: |