2014-12-31 60 views
1

我有一個分隔基於條件在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

回答

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 

所以這基本上都會讓你的數據類型和數據,你可以用你提到

現有代碼解析
相關問題