【发布时间】:2014-12-02 16:40:36
【问题描述】:
我创建了一个 SQL Server 函数,该函数接受一个管道数字序列,使用查找表将数字转换为相应的名称,然后将名称连接在一起,用逗号分隔,并返回一个字符串。
该函数工作正常,只是它没有将字符串连接在一起。我的代码如下:
CREATE FUNCTION UDF_GetNotifyUsersFromIDString
(@IDString VARCHAR(MAX))
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @UsersDisplay VARCHAR(MAX)
DECLARE @UserID VARCHAR(255)
DECLARE @UserDisplay VARCHAR(255)
DECLARE @DelimPos INT
DECLARE @WorkingString VARCHAR(MAX)
SET @WorkingString = @IDString
WHILE (@WorkingString <> '')
BEGIN
SET @DelimPos = CHARINDEX( '|', @WorkingString)
IF @DelimPos > 0
BEGIN
SET @UserID = LEFT(@WorkingString, @DelimPos-1)
SET @WorkingString = RIGHT(@WorkingString, LEN(@WorkingString) - @DelimPos)
END
ELSE
BEGIN
SET @UserID = @WorkingString
SET @WorkingString = ''
END
SET @UsersDisplay = @UsersDisplay + ',' + (SELECT lookup FROM VW_LOOKUP_SecurityUser WHERE ID = @UserID)
END
RETURN @UsersDisplay
END
并运行它我使用:
PRINT dbo.UDF_GetNotifyUsersFromIDString('1|2|3|2|3|')
如果我执行以下操作:
SET @UsersDisplay = (SELECT lookup FROM VW_LOOKUP_SecurityUser)
并检查每次迭代,分配了正确的值,但是当我要求它加入它们时,它返回一个空白条目。我怀疑我加入字符串的方法不正确,但找不到替代方法。
【问题讨论】:
标签: sql-server string function concatenation