mysql json取值自定义函数

这个自定义函数的目的是处理格式非常简单的JSON,像下面这种

{“name”:"Tom", "age":21, "sex":"male"}

给出名字,要求取出对应的值。

DELIMITER $$

DROP FUNCTION IF EXISTS `json_item` $$

CREATE FUNCTION `json_item`(
  my_json VARCHAR(4096),
  my_item VARCHAR(64)
) RETURNS VARCHAR(512) CHARSET utf8

BEGIN
  DECLARE s VARCHAR(4096);
  DECLARE i, j SMALLINT UNSIGNED;
  IF my_json = '' OR my_json IS NULL THEN
    return '';
  END if;
  set s = CONCAT('"',my_item,'":');
  SET i = INSTR(my_json,  s);
  IF i = 0 then
    return '';
  end if;
	
  set i = i + length(my_item) + 3;
  set j = LOCATE(',', my_json, i); 
  if j = 0 then 
    set j = LOCATE('}', my_json, i);
  end if;
  if j = 0 then
    return '';
  end if;
		
  set s = substring(my_json, i, j - i);
  if left(s, 1) = '"' then
    set s = substring(s, 2, length(s) - 2);
  end if;
  return s;
END$$

DELIMITER ;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值