我正在尝试将一个表(ApplicationUsers
是表中的两列中的值组合在一起,列是UserFirstName
和UserLastName
)到一个名为{{1} }。我似乎什么都没做,我的目标是将此新变量插入另一个表中。我尝试了多种方法,但这是最失败的方法(失败)
UserName
我一直在 DECLARE @UserFirstName nvarchar(250)
DECLARE @UserLastName nvarchar(250)
DECLARE @UserName nvarchar(250)
DECLARE @Role nvarchar = Null
DECLARE @AppUserName nvarchar(250) = 'jbrown'
SELECT AppUserName, (CAST(UserFirstName as Nvarchar(250)) + ' ' +
CAST(UserLastName as Nvarchar(250))) AS @UserName
FROM ApplicationUsers
WHERE @AppUserName = AppUserName
和Invalid column
上收到UserFirstName
。我也尝试过,但是基本上什么也没选择。我在这里做错了什么?我的目标是拥有UserLastName
@UserName = 'John Brown'
注意:如果我仅使用以下内容,它将从表中选择正确的行/记录-
SELECT AppUserName, UserFirstName, UserLastName
FROM ApplicationUsers
WHERE @AppUserName = AppUserName
AND @UserFirstName = UserFirstName
AND @UserLastName = UserLastName
AND @UserName = UserFirstName + ' ' + UserLastName
Print @UserName
答案 0 :(得分:1)
我改用CONCAT()
:
SELECT @UserName = CONCAT(UserFirstName, ' ', UserLastName)
FROM ApplicationUsers
WHERE AppUserName = @AppUserName;
如果其中一个(即UserFirstName
,UserLastName
)的值为null
,则整个字段将为null
。因此,CONCAT()
将null
的值隐式转换为空字符串。
如果不支持CONCAT()
,请改用ISNULL()
并进行串联:
SELECT @UserName = ISNULL(UserFirstName, '') + ' ' + ISNULL(UserLastName, '')
FROM ApplicationUsers
WHERE AppUserName = @AppUserName;
这假设AppUserName
如果没有多余的行,则使用DISTINCT
或TOP (1)
子句。