lbr*_*him -1 sql sql-server coalesce
Coalesce will return the first non-null value among its arguments文件说.我也可以像下面这样使用它:
DECLARE @ColumnValue VARCHAR(MAX);
SELECT @ColumnValue = COALESCE(@ColumnValue+',','') + ColumnValue
FROM dbo.TableA
SELECT @ColumnValue
Run Code Online (Sandbox Code Playgroud)
根据我的理解,,输出列表的最前面应该有一个,因为从一开始就至少会有一个逗号作为参数传递.另外,如果我在第二个参数中加入一些值.它出现在最前面而不是,我预期的那样.
如果有人可以请我解释代码.我将非常感激.
你的理解是不正确的.
专注于表达:
SELECT @ColumnValue = COALESCE(@ColumnValue+',','') + ColumnValue
-------------------------------^XXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
第一个参数COALESCE()是@ColumnValue+','.这最初是NULL,因此它被替换为''.然后ColumnValue作为列表中的第一个元素.
你可能会想到:
SELECT @ColumnValue = COALESCE(@ColumnValue, '') + ',' + ColumnValue
Run Code Online (Sandbox Code Playgroud)
你很困惑.既然起初@ColumnValue是NULL,那么结果@ColumnValue + ','也是NULL,所以结果COALESCE(@ColumnValue+',','')是''.这很容易测试:
DECLARE @ColumnValue VARCHAR(MAX);
SELECT COALESCE(@ColumnValue+',','')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11320 次 |
| 最近记录: |