使用sql語句解析json字串

2021-10-19 14:59:49 字數 809 閱讀 8120

發現當前資料庫對字串的解析都是使用儲存過程,但是大部分公司不建議使用存過,無奈之下寫了如下的解析方式:

原始資料如下圖:

經過資料分析發現,每個鍵值對的分隔符是","(兩個引號加乙個英文逗號)

資料進行第一步去除數值中兩側{},變更","為~(下面在如果使用的是regexp_substr()函式可不進行變更,使用變更的主要原因是下面的strsplit()只能使用乙個字元varchar(1),是規定還是寫的不對,目前不是很清楚),去除多餘雙引號,得到數值如下:

然後對資料進行行轉列

這裡存在兩種方式,一種是json字串每個鍵值對的位置比較穩定,可以使用函式regexp_substr(sms_cntt,'[^~]+',1,1)獲取到的值如下:

使用replace()函式替換掉欄位名和「:」就是你想要的值

另一種方式是使用strsplit()函式,如下:

該處理獲取到的值會在同一列進行展示,需根據模糊匹配已知的欄位名加「:」獲取相應的鍵值對,最後利用replace()函式替換掉欄位名和「:」就是你想要的值

SQL解析Json欄位

mysql支援原生json型別,使用json資料型別相較於將json格式的字串儲存在string型中的優勢有 儲存時會自動驗證json文字 可以優化儲存格式。儲存在json型中的json文字會被轉換成乙個支援快速讀取的文件元素,這樣在使用時不需要再解析文字,並且可以直接通過鍵和索引訪問其中的子物件而...

使用cJSON解析JSON字串

一 為何選擇cjson 我們在使用json格式時,如果只是處理簡單的協議,可以依據json格式,通過對字串 的操作來進行解析與建立。然而隨著協議逐漸複雜起來,經常會遇到一些未考慮周全的地方,需要進一 步的完善解析方法,此時,使用比較完善的json解析庫的需求就提出來了。基於方便引用的考慮,我們希望這...

SQL基礎語句解析

sql structuredquerylanguage 語句又叫結構化查詢語言,適用於關係型據庫比如mysql,oracle,sqlserver等資料庫.ddl 資料定義語言 用於運算元據庫和表 dml 資料操作語言 用於操作表中的記錄 dql 資料查詢語言 用於查詢表中的記錄 dcl 資料控制語言...