Установка объявленной переменной в 2 сцепленных столбца - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь объединить значения из 2 столбцов из одной таблицы (ApplicationUsers - это таблица, а столбцы - UserFirstName и UserLastName) в одну переменную с именем 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

Примечание: если я просто использую следующее, он выбирает правильную строку / запись из таблицы -

SELECT AppUserName, UserFirstName, UserLastName
FROM ApplicationUsers
WHERE @AppUserName = AppUserName

1 Ответ

0 голосов
/ 08 февраля 2019

Я бы использовал 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...