我們的數據庫將多個天的小時數存儲爲一個字符串(格式爲JSON
,請參見下文)。我需要提取任何一天的時間。問題是JSON
不保證有保證的順序的日子。如何將一串連接值拆分爲特定列
我試圖substr
和instr
這樣:
SUBSTR(hours_xltd,
INSTR(hours_xltd,'"MONDAY"', 1, 1)+1,
INSTR(hours_xltd,',',1,2) - INSTR(hours_xltd,',',1,1)-1) as Monday
這給了我MONDAY":"0800-1800","F
但我需要的是:
Monday
0800-1800
我需要同樣的事情Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
。這是所需的輸出(每天在它自己的列上,在我的例子中用管道表示);
monday | tuesday | wednesday | thursday | friday | saturday | sunday
----------------------------------------------------------------------------------
0800-1800 | 0800-1800 | 0800-1800 | 0800-1800 | 0800-1800 | 0800-1800 | 0800-1800
的樣本數據:
{
"default": {
"standard_hours": {
"TUESDAY":"0800-1800",
"SATURDAY":"0800-1400",
"WEDNESDAY":"0800-1800",
"THURSDAY":"0800-1800",
"SUNDAY":"",
"MONDAY":"0800-1800",
"FRIDAY":"0800-1800"}
}
}
{
"default": {
"standard_hours": {
"MONDAY":"0800-1800",
"TUESDAY":"0800-1800",
"WEDNESDAY":"0800-1800",
"THURSDAY":"0800-1800",
"FRIDAY":"0800-1800",
"SATURDAY":"0800-1800",
"SUNDAY":"0800-1800"}
}
}
請幫我檢查代碼?我似乎無法弄清楚這一點。
你會一直有2行7列輸出嗎?數據總是會在每週的每一天都有價值嗎?你總是希望星期一價值在第一列嗎?哦,你用的是什麼版本的Oracle? Oracle在12.1中內置了對JSON的支持。如果沒有,您是否使用第三方JSON包? –
要回答你的一些問題,不,我將有多行,因爲數據範圍從1到很多。但是,我會一直有7欄輸出。不是所有的日子都會有價值(例如「星期六」:「」,「星期日」:「」)。我目前正在使用12.1。 –