我有一个分隔
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 :(得分:0)
要摆脱前三个参数,你可以做到这一点:
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
所以这基本上会留下数据类型和数据,您可以使用您提到的现有代码进行解析