SQL Server拆分字符串并获取值

时间:2016-08-08 11:01:16

标签: sql sql-server-2008

大家好,请帮帮我

获取结果
$count

结果:

select details from table
enter code here

我需要以下结果

Title|Firstname|Lastname|Mobilephone~Mr|jack|steve|123456789~Mr|test|Ltest|123456789~Mrs|Demo|Ldemo|12345678~Mrs|Fname|Lname|1234567

2 个答案:

答案 0 :(得分:0)

您需要编写存储过程,该存储过程将扫描整行,并在循环中为您提供管道分隔值。

答案 1 :(得分:0)

您的问题的解决方案之一如下:

DECLARE @PARAM_STRING VARCHAR(1000)=REPLACE('Title|Firstname|Lastname|Mobilephone~Mr|jack|steve|123456789~Mr|test|Ltest|123456789~Mrs|Demo|Ldemo|12345678~Mrs|Fname|Lname|1234567','|',''',''')+''''
DECLARE @DYNAMIC_QUERY VARCHAR(MAX)
DECLARE @TABLE TABLE(ID INT,DATA VARCHAR(MAX))
INSERT INTO @TABLE 
SELECT 1 ID, 'SELECT '+DATA FROM (
SELECT A.B.value('.','VARCHAR(50)')DATA FROM 
(SELECT CAST('<A>'''+REPLACE(@PARAM_STRING,'~','''</A><A>''')+'</A>' AS     XML)COL)T
CROSS APPLY T.COL.nodes('/A') AS A(B))F WHERE DATA<>''
SELECT  @DYNAMIC_QUERY=STUFF((SELECT ' UNION ALL ' + CAST(DATA AS     VARCHAR(MAX))     [text()]FROM @TABLE WHERE ID = t.ID
    FOR XML PATH(''), TYPE).value('.','NVARCHAR(MAX)'),1,10,' ')
FROM @TABLE t GROUP BY ID
EXECUTE(@DYNAMIC_QUERY)