我有一个名为data
的JSON列类型,其值如下:
{"name": "tester", "email": "tester@example.com"}
我可以通过data->name
等利用这些值。
但是,如果尝试访问data->phone
之类的未知参数,则会收到unknown parameter
错误,因为该特定参数不存在。
如何查询此参数,以便在尝试访问不存在的参数时将其默认为null
?
答案 0 :(得分:1)
提取JSON字段的语法不是data->phone
,而是data->'$.phone'
。
请参见https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#operator_json-column-path
如果正确使用语法,则在找不到与您的搜索匹配的字段时,它将返回NULL。
MySQL 8.0.14上的演示:
create table j (data json);
insert into j set data='{"name": "tester", "email": "tester@example.com"}';
select data->email from j;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'email from j' at line 1
select data->'$.email' from j;
+----------------------+
| data->'$.email' |
+----------------------+
| "tester@example.com" |
+----------------------+
select data->'$.phone' from j;
+-----------------+
| data->'$.phone' |
+-----------------+
| NULL |
+-----------------+
答案 1 :(得分:0)
据我所知,您拥有的数据存储为对象。和->运算符用于从数组获取数据。 U可以使用存储对象的变量的名称来获取数据。
像这样-
var d = { “ name”:“ tester”, “电子邮件”:“ tester@example.com” };
//现在可以访问
d [“ name”]将给您想要的结果