Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在JSON数组中使用JSON_提取、JSON_集、JSON_替换、JSON_插入_Mysql_Json - Fatal编程技术网

Mysql 在JSON数组中使用JSON_提取、JSON_集、JSON_替换、JSON_插入

Mysql 在JSON数组中使用JSON_提取、JSON_集、JSON_替换、JSON_插入,mysql,json,Mysql,Json,我在mysql的mysql中有一个名为names的json类型列,它是一个简单的json数组(不是key/value)。我找不到任何使用JSON\u EXTRACT,JSON\u SET,JSON\u REPLACE,JSON\u INSERT作为简单JSON数组字段的示例 我知道还有其他方法可以在json字段类型中操作json数组,但是可以将这些函数用于json数组吗 例如,name字段包含[“A”、“B”、“C”],我如何使用这些函数对该json执行更新、插入和删除 更新 查询必须从php脚

我在mysql的
mysql
中有一个名为
names
的json类型列,它是一个简单的json数组(不是key/value)。我找不到任何使用
JSON\u EXTRACT
JSON\u SET
JSON\u REPLACE
JSON\u INSERT
作为简单JSON数组字段的示例

我知道还有其他方法可以在json字段类型中操作json数组,但是可以将这些函数用于json数组吗

例如,
name
字段包含
[“A”、“B”、“C”]
,我如何使用这些函数对该json执行更新、插入和删除

更新


查询必须从php脚本执行

您的值不是MySQL的有效JSON数组。它的格式必须是
[“A”、“B”、“C”]
。一旦启用,您所引用的功能将完全按照中的预期和描述工作;也就是说,
JSON\u SET
将在值已经存在时插入或替换,
JSON\u insert
将在值还不存在时插入,
JSON\u replace
将替换预先存在的值

-- extract second element
select json_extract('["A", "B", "C"]', '$[1]')
"B"

-- replace second element
select json_set('["A", "B", "C"]', '$[1]', 'D')
["A", "D", "C"]

-- insert fourth element
select json_set('["A", "B", "C"]', '$[3]', 'E')
["A", "B", "C", "E"]

-- attempt to insert second element fails as it already exists
select json_insert('["A", "B", "C"]', '$[1]', 'F')
["A", "B", "C"]

-- insert fourth element
select json_insert('["A", "B", "C"]', '$[3]', 'F')
["A", "B", "C", "F"]

-- replace second element
select json_replace('["A", "B", "C"]', '$[1]', 'G')
["A", "G", "C"]

-- attempt to replace non-existing element fails
select json_replace('["A", "B", "C"]', '$[3]', 'G')
["A", "B", "C"]

您的值不是MySQL的有效JSON数组。它的格式必须是
[“A”、“B”、“C”]
。一旦启用,您所引用的功能将完全按照中的预期和描述工作;也就是说,
JSON\u SET
将在值已经存在时插入或替换,
JSON\u insert
将在值还不存在时插入,
JSON\u replace
将替换预先存在的值

-- extract second element
select json_extract('["A", "B", "C"]', '$[1]')
"B"

-- replace second element
select json_set('["A", "B", "C"]', '$[1]', 'D')
["A", "D", "C"]

-- insert fourth element
select json_set('["A", "B", "C"]', '$[3]', 'E')
["A", "B", "C", "E"]

-- attempt to insert second element fails as it already exists
select json_insert('["A", "B", "C"]', '$[1]', 'F')
["A", "B", "C"]

-- insert fourth element
select json_insert('["A", "B", "C"]', '$[3]', 'F')
["A", "B", "C", "F"]

-- replace second element
select json_replace('["A", "B", "C"]', '$[1]', 'G')
["A", "G", "C"]

-- attempt to replace non-existing element fails
select json_replace('["A", "B", "C"]', '$[3]', 'G')
["A", "B", "C"]

我想我找到了解决办法

对于json数组,不可能按数组值使用
json\u EXTRACT
json\u SET
json\u REPLACE
json\u INSERT
,而且必须知道每个值在json数组中的位置(我认为这是一个弱点)

例如,要选择第二个值,可以使用
$[1]
, 但对于插入值,可以使用
JSON\u ARRAY\u APPEND
JSON\u ARRAY\u INSERT

我想我找到了解决方案

对于json数组,不可能按数组值使用
json\u EXTRACT
json\u SET
json\u REPLACE
json\u INSERT
,而且必须知道每个值在json数组中的位置(我认为这是一个弱点)

例如,要选择第二个值,可以使用
$[1]
, 但对于插入值,可以使用
JSON\u ARRAY\u APPEND
JSON\u ARRAY\u INSERT

谢谢您的回答,我只是更新了问题,我不是从控制台运行查询,而是从php脚本运行查询。我需要提供表名和字段名。您能否通过脚本执行示例查询?什么是
$[1]
$[3]
?谢谢你的回答,我刚刚更新了这个问题,我不是从控制台运行查询,而是从php脚本运行查询。我需要提供表名和字段名。您能否通过脚本执行示例查询?什么是
$[1]
$[3]