【问题标题】:How to concat two columns data in one inside SET如何在 SET 内将两列数据合二为一
【发布时间】:2019-06-17 04:33:14
【问题描述】:

我需要连接两列。我尝试如下,

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

【问题讨论】:

    标签: sql-server concat


    【解决方案1】:

    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 
    

    【讨论】:

    • 我试过了,它显示以下错误An expression of non-boolean type specified in a context where a condition is expected, near 'IsAc'
    • 是的,我检查了它,我输入了没有任何遗漏的部分,但它仍然无法正常工作,所以我复制粘贴了您的代码。发生同样的错误
    • @sqlDECLARE 怎么样?是否足够长以获取所有结果字符串。您可以在字符串上使用SELECT LEN() 来检查结果是否会被截断。
    • 更新了问题,我就是这么声明的。是不是有问题?
    • 别担心,这就是一次敲打一件事,直到它起作用:-)
    【解决方案2】:

    您也可以在 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2021-12-13
      • 2016-11-28
      • 1970-01-01
      • 2016-02-06
      相关资源
      最近更新 更多