SQL截取查询结果中固定字段之间的内容
生活随笔
收集整理的這篇文章主要介紹了
SQL截取查询结果中固定字段之间的内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在做數據查詢時,字段存了冗余的內容,希望查詢結果只需要客戶填寫的中文數據,數據展示如下
| 10000 | {“customField4”:“墻面修繕維修”} |
| 10001 | {“customField4”:“墻面、隔斷、水池、地磚修繕裝修”} |
| 10002 | {“customField4”:“施工方應具備室內裝修設計及施工的專業能力,預先與我方共同制定裝修方案后施工;所有裝修用料均需環保無污染,符合國家相關標準要求;施工標準均應符合國家相關標準及規定;施工期間做好室內設備的保護,施工完畢須將實訓室內衛生全面清理干凈;施工方須按我方要求,在規定時”} |
| 10003 | {“customField4”:“施工方應具備室內裝修設計及施工的專業能力,預先與我方共同制定裝修方案后施工;所有裝修用料均需環保無污染,符合國家相關標準要求;施工標準均應符合國家相關標準及規定;施工期間做好室內設備的保護,施工完畢須將實訓室內衛生全面清理干凈;施工方須按我方要求,在規定時”} |
期望結果是將上述表格中的中文結果查詢出來
MySQL的截取函數有MID,SUBSTR,SUBSTRING,LEFET,RIGHT
我們采用mid方式來做截取,分析數據規律前17位,后2為數據是多余的,但中間的位數是不確定。
而mid(str,a,b)函數是截取str從a為開始,到a+b位,在本次查詢時,b是不確定的,以10000為例,b應該是6。
| 10000 | 墻面修繕維修 |
| 10001 | 墻面、隔斷、 |
| 10002 | 施工方應具備 |
| 10003 | 施工方應具備 |
如上結果其他不滿足,因此采用POSITION函數來確定b的位數,匹配后面的雙引號的位置
SELECT id, POSITION('"}' in custom_content) FROM table_name| 10000 | 24 |
| 10001 | 33 |
| 10002 | 146 |
| 10003 | 146 |
采用如上兩個函數,因為起始是從18位開始的,要給雙引號的位置減去18,結合起來就得到如下的結果
SELECT id,MID(custom_content,18,POSITION('"}' in custom_content)-18) from table_name| 10000 | 墻面修繕維修 |
| 10001 | 墻面、隔斷、水池、地磚修繕裝修 |
| 10002 | 施工方應具備室內裝修設計及施工的專業能力,預先與我方共同制定裝修方案后施工;所有裝修用料均需環保無污染,符合國家相關標準要求;施工標準均應符合國家相關標準及規定;施工期間做好室內設備的保護,施工完畢須將實訓室內衛生全面清理干凈;施工方須按我方要求,在規定時 |
| 10003 | 施工方應具備室內裝修設計及施工的專業能力,預先與我方共同制定裝修方案后施工;所有裝修用料均需環保無污染,符合國家相關標準要求;施工標準均應符合國家相關標準及規定;施工期間做好室內設備的保護,施工完畢須將實訓室內衛生全面清理干凈;施工方須按我方要求,在規定時 |
聽說有正則的函數REGEXP快速實現,查了一下貌似只能用于條件使用,跟like差不多,大家有其他更方便的辦法,歡迎評論。
該方法存在不足的地方是,沒辦法像正則表達式一樣提取兩個字符中間的字符串般自由
總結
以上是生活随笔為你收集整理的SQL截取查询结果中固定字段之间的内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows XP SP3 无需密匙即
- 下一篇: SQL 截取日期年份和月份