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.查询结果片段

参考链接:Mysql中json类型数据查询_mysql查询json内字段_msw、的博客-CSDN博客

posted @ 2023-07-12 09:55  奋--斗  阅读(280)  评论(0编辑  收藏  举报