基于条件在SQL Server中的分隔字符串

问题描述:

我有一个分隔基于条件在SQL Server中的分隔字符串

string ";2;5;2;5;04/02/2014;3;100.000000;5;04/02/2015;3;100.000000;5;04/02/2016;3;100.000000;5;04/02/2017;3;100.000000;5;04/02/2018;3;100.000000;" 

格式的数据以子串如下:

1st character: Delimiter used within this format field 
Number of dimensions 
Delimiter 
Number of rows 
Delimiter 
Number of columns 
Delimiter 
...Data Elements… 
Delimiter 

我想提取里面这个数据查询或函数来获取表格格式的数据元素,如

ScheduleDate ScheduleValue 
04/02/2015 100.000000 
04/02/2016 100.000000 
04/02/2017 100.000000 
04/02/2018 100.000000 
04/02/2016 34428.9700 
04/02/2017 34428.9700 
04/02/2018 34428.9700 
04/02/2019 34428.9700 

也在这里“5”表示日期,“04/02/2015”是实际日期,“3”表示价格,“100.00000”表示实际价格。 同样其他指标,如:

 1 Character 
     2 Numeric 
     3 Price 
     4 Security 
     5 Date  
     6 Time  
     7 Date or time  
     8 Bulk 
     9 Month/Year 

我需要在功能或查询配置,以适应这一点。 如果有人能帮忙,我会非常感激。

+0

我已经尝试使用分离功能分离数据,但我需要拿出一个可配置的表值函数,这将需要所有这些参数的计数给我的输出。任何建议如何去优化方法将不胜感激。 – WPFGuy

+0

SQL服务器中没有分割功能;你有没有自己编写或者你使用.NET? – Jayvee

+0

我已经写在SQL Server中。 – WPFGuy

摆脱了前三个参数的,你可以这样做的一件事:

DECLARE @string VARCHAR(max) 
SET @string=';2;5;2;5;04/02/2014;3;100.000000;5;04/02/2015;3;100.000000;5;04/02/2016;3;100.000000;5;04/02/2017;3;100.000000;5;04/02/2018;3;100.000000;' 
DECLARE @newstring VARCHAR(MAX) 
SET @newstring=CAST((SELECT CAST('<Node>'+REPLACE(@string,';',';</Node><Node>')+'</Node>' AS XML).query('//Node[position()>4]/text()')) AS VARCHAR(MAX)) 
SELECT @newstring 

所以这基本上都会让你的数据类型和数据,你可以用你提到

现有代码解析