如果我的行有一个带有以下值的varchar
:“[1,2,3]
”,如果我需要包含其中一个数字(a 2或3)的值,我怎么能选择整行?
正如您所说,您使用的是MySQL 5.6,因此JSON_EXTRACT()
功能不可用。
我建议的唯一选择是:
您也可以尝试使用其他string functions available in MySQL 5.6解析JSON,但开发会很麻烦且耗时。
您可以在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 ;
因为我在mysql 5.6上需要一个JSON_EXTRACT我自己写了一个原始函数的副本,它可以提取像mysql 5.7中的本机函数之类的值