在连接时是否有更简单的方法在整个字符串中添加字符?我正在考虑利用一个函数来完成这个任务,并且可以通过连接来实现它;然而,除了串联之外,还有其他的选择吗?
下面是我需要do...There的表A,它有8列,例如col1、col2、col3等等。
;WITH
 TABLE_A
 AS
 (
  SELECT 'ABC' AS Col1
         , 'COM' AS Col2
         , 'SMALL' AS Col3
         , '1234' AS Col4
         , 'ABC INC.' AS Col5
         , '123456789' AS Col6
         , 'ABC Of New England' AS Col7
         , 'NC123456' AS Col8
 )
  SELECT *
  FROM TABLE_A我需要将列中的值与每个列之间的>值连接起来。我可以按照……的方式来完成这件事。
CONCAT(Col1,'>',Col2,'>',Col3,'>',Col4,'^',Col5,'>',Col6,'>',Col7,'>',Col8)但是我需要它是动态的,因此,例如,如果Col1 - Col3有一个值,那么只能对那些连接( col1,'>',Col2,'>',‘>,Col3)进行连接,如果Col1- Col5有值,那么Col1-Col5有值(Col1,'>',Col2,'>',Col3,’>‘’,Col4,'^',Col5等等),连接应该只在有值的范围内进行.
另外,要添加另一个皱纹,而不是Col4和Col5之间的>,我需要一个胡萝卜^作为分隔符。
是否有一种不使用CONCAT的替代方法来做到这一点?也许是个循环?
发布于 2020-02-18 22:20:36
下面是一些有用的东西的例子,尽管它只有最低限度的验证来满足您的需求。
;WITH
 TABLE_A
 AS
 (
  SELECT 'ABC' AS Col1
         , 'COM' AS Col2
         , 'SMALL' AS Col3
         , '1234' AS Col4
         , 'ABC INC.' AS Col5
         , '123456789' AS Col6
         , 'ABC Of New England' AS Col7
         , 'NC123456' AS Col8
 )
  SELECT ConcentenatedString = ISNULL(('>' + NULLIF(a.Col1,'')),'')
        +ISNULL(('>' + NULLIF(a.Col2,'')),'')
        +ISNULL(('>' + NULLIF(a.Col3,'')),'')
        +ISNULL(('>' + NULLIF(a.Col4,'')),'')
        +ISNULL(('^' + NULLIF(a.Col5,'')),'')
        +ISNULL(('>' + NULLIF(a.Col6,'')),'')
        +ISNULL(('>' + NULLIF(a.Col7,'')),'')
        +ISNULL(('>' + NULLIF(a.Col8,'')),'')
  FROM TABLE_A aNULLIF用于将空字符串转换为NULL,以便在连接到NULL时消除分隔符。然后将这些空值转换回空白,以防止字符串的其余部分被删除。
https://stackoverflow.com/questions/60289991
复制相似问题