【问题标题】:SQL create concatenated stringSQL 创建连接字符串
【发布时间】:2013-02-22 16:13:56
【问题描述】:

我有一个名为 service entry 的表,我正在尝试创建一个连接字符串。

ID  ServiceEntryID  PartID  Comment  ServiceTypeIDs  PartDescription
1        2           54      xyz      1               hellothere
2        2           22                               howdy
3        33          54      uhu      1               xyz

所需的字符串格式

PartID~PartDescription~ServiceTypeIDs~Comment

所需的字符串值

对于值为 2 的服务条目 ID 列:

54~你好~1~xyz | 22~你好~空~|

对于值为 33 的服务条目 ID 列:

33~xyz~1~uhu

如果条目没有注释,那么我不会为其添加 null,而如果 servicetypeids 为空,那么我将添加 null

【问题讨论】:

  • 只需将每个字符串包装在一个 coalesce(comment,'null') 语句中。
  • 感谢您的 cmets 和答案

标签: sql sql-server


【解决方案1】:
SELECT
     ServiceEntryID,
     STUFF(
         (SELECT '|' + CAST(PartID AS VARCHAR(5)) + '~' +
                       PartDescription  + '~' +
                       COALESCE(CAST(ServiceTypeIDs AS VARCHAR(5)), 'NULL')  + '~' +
                       COALESCE(Comment, 'NULL')
          FROM TableName
          WHERE ServiceEntryID = a.ServiceEntryID
          FOR XML PATH (''))
          , 1, 1, '')  AS ResultList
FROM TableName AS a
WHERE ServiceEntryID = 2
GROUP BY ServiceEntryID

【讨论】:

  • @tamtam 很高兴听到 :D
【解决方案2】:
Select   coalesce(partID,'NULL') +'~'+ 
coalesce(PartDescription,'NULL') +'~'+ 
 coalesce(ServiceTypeIDs,'NULL') +'~'+
 coalesce(Comment,'NULL') as DesiredStringFormat
FROM yourTableName

当任何字段为 NULL 时,上面将替换单词“NULL”。

http://msdn.microsoft.com/en-us/library/ms190349.aspx

【讨论】:

    最近更新 更多