SQL 查询存储过程中的分隔字符串

标签 sql sql-server stored-procedures concatenation delimiter

我有 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/

相关文章:

sql - 如果不满足条件,如何使存储过程失败

c# - 如何在 C# 中使用存储过程返回结果列表?

mysql - 获取一对多关系中的所有子记录

sql - 如何在 SQL Server 中的 select 语句中将表名作为参数传递

c# - 如何使用 Join 搜索字段?

sql-server - SQLCMD 中忽略 SET NOCOUNT OFF

sql-server - 如何在 Windows Azure SQL 数据库上查找未完成的事务?

mysql - MySQL bigint转UUID的存储过程

mysql - 这两个mysql查询的区别

sql - 优化简单的 SQL 查询?