Zer*_*ity 42 sql t-sql sql-server sql-server-2005
我在SQL Server中得到的结果为
SELECT StudentId FROM Student WHERE condition = xyz
Run Code Online (Sandbox Code Playgroud)
我得到的输出就像
StudentId 1236 7656 8990 ........
存储过程的输出参数是@studentId
字符串,我希望return语句为
1236, 7656, 8990.
Run Code Online (Sandbox Code Playgroud)
如何在单个字符串中转换输出?
我正在返回单列[即.学生卡]
Bon*_*ton 58
DECLARE @result varchar(1000)
SELECT @result = ISNULL(@result, '') + StudentId + ',' FROM Student WHERE condition = xyz
select substring(@result, 0, len(@result) - 1) --trim extra "," at end
Run Code Online (Sandbox Code Playgroud)
ABI*_*ABI 48
测试一下:
DECLARE @result NVARCHAR(MAX)
SELECT @result = STUFF(
( SELECT ',' + CONVERT(NVARCHAR(20), StudentId)
FROM Student
WHERE condition = abc
FOR xml path('')
)
, 1
, 1
, '')
Run Code Online (Sandbox Code Playgroud)
小智 9
使用COALESCE
功能:
DECLARE @StudentID VARCHAR(1000)
SELECT @StudentID = COALESCE(@StudentID + ',', '') + StudentID
FROM Student
WHERE StudentID IS NOT NULL and Condition='XYZ'
select @StudentID
Run Code Online (Sandbox Code Playgroud)
这两个答案都是有效的,但不要忘记初始化变量的值,默认为NULL并使用T-SQL:
NULL + "Any text" => NULL
Run Code Online (Sandbox Code Playgroud)
这是一个非常常见的错误,不要忘记它!
使用ISNULL功能也是个好主意:
SELECT @result = @result + ISNULL(StudentId + ',', '') FROM Student
Run Code Online (Sandbox Code Playgroud)
使用该CONCAT
函数可以避免转换错误:
DECLARE @StudentID VARCHAR(1000)
SELECT @StudentID = CONCAT(COALESCE(@StudentID + ',', ''), StudentID)
FROM Student
WHERE StudentID IS NOT NULL and Condition='XYZ'
select @StudentID
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
126511 次 |
最近记录: |