IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [MySQL]JSON数组取对称差集函数

    罗佳(博主)发表于 2024-06-07 19:09:13
    love 0

    写了个函数,做个记录。作用是扣掉两个数组相同的部分,只保留不同的部分,也就是对称差集。

    CREATE FUNCTION `array_diff`(`arr1` json, `arr2` json) RETURNS json
        NO SQL
        DETERMINISTIC
    BEGIN
    	RETURN (
    		WITH 
    		A AS (SELECT el FROM JSON_TABLE(arr1, '$[*]' COLUMNS(el INT PATH '$')) T),
    		B AS (SELECT el FROM JSON_TABLE(arr2, '$[*]' COLUMNS(el INT PATH '$')) T)
    		SELECT JSON_ARRAYAGG(el) FROM (
    			SELECT el FROM A WHERE A.el NOT IN (SELECT el FROM B)
    			UNION
    			SELECT el FROM B WHERE B.el NOT IN (SELECT el FROM A)
    		) AS T
    	);
    END

    调用

    select array_diff('[1,2,3]','[2,3,4]')

    结果

    [1, 4]

     



沪ICP备19023445号-2号
友情链接