我在mysql 5.6上,因此使用自定义函数来扩展json字段。如果每个json字段只有一个值,则工作正常,但如果有多个则失败。
Table extract
user_id, cb_contactgroup
289, [{"cb_mobile":"777777777","cb_phonefixedline":"666666666"}]
290, [{"cb_mobile":"999999999","cb_phonefixedline":"888888888"}]
291, [{"cb_mobile":"1111111111","cb_phonefixedline":"2222222222"},{"cb_mobile":"3333333333","cb_phonefixedline":"4444444444"}]
对于user_id 291
,应该有两行,但只有一行显示如下。
user_id, mobile, phonefixedline
289, 777777777, 666666666
290, 999999999, 888888888
291, 3333333333, 4444444444
我正在使用以下功能。我不是技术人员,有人可以帮助我纠正以下功能:
ELIMITER $$
DROP FUNCTION IF EXISTS `json_extract_c`$$
CREATE DEFINER=`root`@`%` FUNCTION `json_extract_c`(
details TEXT,
required_field VARCHAR (255)
) RETURNS TEXT CHARSET latin1
BEGIN
RETURN TRIM(
BOTH '"' FROM SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
details,
CONCAT(
'"',
SUBSTRING_INDEX(required_field,'$.', - 1),
'"'
),
- 1
),
'",',
1
),
':',
- 1
)
) ;
END$$
DELIMITER ;
从查询被选择的地方发布
How to get values from MySQL(5.6) column if that contains json document as string-@user3631341
答案 0 :(得分:0)
因为我需要在mysql 5.6上使用JSON_EXTRACT,所以我自己写了一个原始函数的副本,该函数可以提取值,例如mysql 5.7中的本机函数。