我有 table :
CREATE TABLE [address_tabletype] (
[CONTROL_NUMBER] [varchar](12) NULL,
[ADDRESS1] [varchar](50) NULL,
[ADDRESS2] [varchar](50) NULL,
[CITY] [varchar](50) NULL,
[STATE] [varchar](2) NULL,
[ZIP] [varchar](10) NULL
)
GO
并且,假设我有以下行:
2506387 1 2 3 4 5
2506394 1 2 3 4 5
2506403 1 2 3 4 5
我希望看起来像:
2506387|1|2|3|4|5~2506394|1|2|3|4|5~2506403|1|2|3|4|5
我还没有尝试过任何东西,因为老实说我不知道从哪里开始。
我正在使用 SQL Server 2008 R2,并将使用临时表来构建此字符串。
编辑
我使用它来传递给第 3 方 CLR 函数,该函数绝对需要以这种方式分隔的字符串。我计划将其发送给函数,将其返回给 SP,将其分解为其原始形式,然后将结果返回给 SP 的调用者。
谢谢。
最佳答案
尝试以下操作:
SELECT STUFF((select (
SELECT '~' + (
CONTROL_NUMBER+'|'+
ADDRESS1 +'|'+
ADDRESS2 + '|'+
CITY + '|'+
[States] + '|'+
ZIP)
FROM address_tabletype
FOR XML PATH(''), type
).value('text()[1]', 'varchar(max)')), 1, 1, '')
关于SQL 查询存储过程中的分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343873/