MYSQL CONVERT、JSON_EXTRACT函數的使用總結
一.CONVERT、CONCAT、COUNT函數聯合查詢
CONVERT()函數用于將值從一種數據類型轉換為表達式中指定的另一種數據類型。 MySQL還允許它將指定的值從一個字符集轉換為另一個字符集。 CONCAT()函數需要一個或多個字符串參數,并將他們連接成一個字符串。CONCAT() 函數需要至少一個參數,否則會引起報錯。 COUNT(1):統計不為NULL 的記錄。 COUNT(*):統計所有的記錄(包括NULL)。 COUNT(字段):統計該"字段"不為NULL 的記錄。 COUNT(DISTINCT 字段):統計該"字段"去重且不為NULL 的記錄。 1.如果這個字段是定義為not null的話,一行行地從記錄里面讀出這個字段,判斷不能為null,按行累加。 2.如果這個字段定義允許為null的話,判斷到有可能是null,還要把值取出來在判斷一下,不是null才累加。
SELECT f_subcontract_unit_name, CONVERT ( concat( '好: ', count( IF ( f_evaluation_result = '好', 1, NULL ) ), '次', ',差: ', count( IF ( f_evaluation_result = '差', 1, NULL ) ), '次' ) USING utf8 ) AS evaluationResult FROM f_score_result GROUP BY f_subcontract_unit_id

這里推薦一篇大佬的博客關于:(295條消息) SQL中CONVERT()函數用法詳解_啊猿的博客-CSDN博客
二.JSON_EXTRACT函數
獲取JSON對象中某個key對應的value值
json_extract函數中,第一個參數content表示json數據,第二個參數為json路徑,其中$表示該json數據本身,$.name就表示獲取json中key為name的value值
1.元數據展示:

2.查詢SQL片段
SELECT REPLACE( a.scoreItemId, '"', '' ) AS scoreItemId, REPLACE ( a.scoreItemName, '"', '' ) AS scoreItemName, REPLACE ( a.score, '"', '' ) AS score FROM ( SELECT JSON_EXTRACT ( score_item_json, '$[0].scoreItemId' ) AS scoreItemId, JSON_EXTRACT ( score_item_json, '$[0].scoreItemName' ) AS scoreItemName, JSON_EXTRACT ( score_item_json, '$[0].score' ) AS score FROM t_score WHERE score_item_json IS NOT NULL ) a;
3.查詢結果片段

古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網安備 33010602011771號