Как объединить два столбца данных в одном внутри SET - PullRequest
1 голос
/ 17 июня 2019

Мне нужно объединить две колонки.Я попытался следующим образом:

SET NOCOUNT ON;
declare @sql nvarchar(200)

SET @sql =
'SELECT UserId,CONCAT(CONVERT([varchar](50) ,DECRYPTBYKEY(FirstName)),CONVERT([varchar](50),DECRYPTBYKEY(LastName))) AS [Userfullname]  from [user] WHERE  FkSupervisor in ('
+ @selectedSupervisorIds
+ ') AND IsActive = 1'

EXECUTE Sp_executesql
  @sql 

Это работает нормально, но выдает следующее:

UserId  Userfullname
10397   jhonewal
10422   funnyman
10428   Zeroowl

Как добавить пробел между именем и фамилией?

Ожидаемый результат,

UserId  Userfullname
10397   jhone wal
10422   funny man
10428   Zero owl

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Вы также можете добавить пробелы между firstName и lastName без использования функции CONCAT.Пожалуйста, проверьте следующий запрос:

SET @sql =
'SELECT UserId, (CONVERT([varchar](50), DECRYPTBYKEY(FirstName)) + '' '' + CONVERT([varchar](50), DECRYPTBYKEY(LastName))) AS [Userfullname]  from [user] WHERE  FkSupervisor in ('
+ @selectedSupervisorIds
+ ') AND IsActive = 1'

EXECUTE Sp_executesql
  @sql 
1 голос
/ 17 июня 2019

CONCAT позволяет объединять до 254 параметров.Просто добавьте пробелы в качестве дополнительных параметров там, где вы хотите их добавить:

SET @sql =
'SELECT UserId, CONCAT(CONVERT([varchar](50), DECRYPTBYKEY(FirstName)), '' '', CONVERT([varchar](50), DECRYPTBYKEY(LastName))) AS [Userfullname]  from [user] WHERE  FkSupervisor in ('
+ @selectedSupervisorIds
+ ') AND IsActive = 1'

EXECUTE Sp_executesql
   @sql 
...