如果未知,则将MySQL json列参数访问为NULL

时间:2019-03-23 11:05:28

标签: mysql json

我有一个名为data的JSON列类型,其值如下:

{"name": "tester", "email": "tester@example.com"}

我可以通过data->name等利用这些值。

但是,如果尝试访问data->phone之类的未知参数,则会收到unknown parameter错误,因为该特定参数不存在。

如何查询此参数,以便在尝试访问不存在的参数时将其默认为null

2 个答案:

答案 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”]将给您想要的结果