如果我的行的varchar
具有以下值:“[1,2,3]
”,如果我需要包含其中一个数字(2或3)的值,我怎么能选择整行? )?
答案 0 :(得分:4)
正如您所说,您使用的是MySQL 5.6,因此JSON_EXTRACT()
功能不可用。
我建议的唯一选择是:
升级到MySQL 5.7
将整个JSON文档提取到应用程序中并使用JSON解码功能。
您也可以尝试使用其他string functions available in MySQL 5.6解析JSON,但开发会很麻烦且耗时。
答案 1 :(得分:1)
您可以在sql中创建函数
DELIMITER $$
DROP FUNCTION IF EXISTS `json_extract_c`$$
CREATE FUNCTION `json_extract_c`(
details TEXT,
required_field VARCHAR (255)
) RETURNS TEXT CHARSET latin1
BEGIN
SET details = SUBSTRING_INDEX(details, "{", -1);
SET details = SUBSTRING_INDEX(details, "}", 1);
RETURN TRIM(
BOTH '"' FROM SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
details,
CONCAT(
'"',
SUBSTRING_INDEX(required_field,'$.', - 1),
'":'
),
- 1
),
',"',
1
),
':',
-1
)
) ;
END$$
DELIMITER ;
答案 2 :(得分:0)
因为我需要在mysql 5.6上使用JSON_EXTRACT,所以我自己写了一个原始函数的副本,该函数可以提取值,例如mysql 5.7中的本机函数。