引用json数据的时候出现问题:]JSON text is not properly formatted. Unexpected character '.' is found at position 1. (13609)
问题是脏数据,不能出现脏数据。
1 json存储
在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar()或 varchar()进行存储,不要用text进行存储,用text时候,json的函数不支持。
2 json操作
主要介绍5个函数:
(1)openJson:打开Json字符串
(2)IsJson:判断一个字符串是不是合法的Json格式。是返回1,否返回0,null返回null。
(3)Json_Value:从Json字符串中提取值。
(4)Json_Query:Json字符串中提取对象或数组。
(5)Json_Modify:更新Json字符串中的属性值,并返回更新的Json字符串。
新建wm_json_demo 表:
复制
CREATE TABLE demo_plus.dbo.wm_json_demo ( id int IDENTITY(1,1) NOT NULL, json_detail varchar(max) NOT NULL, CONSTRAINT PK_wm_json_demo PRIMARY KEY (id) );
下面以wm_json_demo 为例,演示以上5个json操作相关的函数
复制
INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":3,"value1":10,"value2":[{"vv21":13,"vv22":103}],"value3":null}'); INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":4,"value1":15,"value2":[{"vv21":13,"vv22":103}],"value3":"10"}'); INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":7,"value1":20,"value2":[{"vv21":13,"vv22":103}],"value3":"15"}');
IsJson:判断一个字符串是不是合法的Json格式。是返回1,否返回0,null返回null。
复制
SELECT IsJson(json_detail) as IsJson from demo_plus.dbo.wm_json_demo
Json_Value:从Json字段中提取值
用法:Json_Value (cloumn_name,’$.json_field_name’) from table
Json_Query:Json字符串中提取对象或数组。
用法:Json_Query (cloumn_name,’$.json_field_name’) from table
复制
SELECT JSON_VALUE(json_detail,'$.key') as 'key', JSON_VALUE(json_detail,'$.value1') as value1, JSON_value(json_detail,'$.value2') as value2, JSON_QUERY(json_detail,'$.value2') as value2_query, JSON_VALUE(json_detail,'$.value3') as value3 from demo_plus.dbo.wm_json_demo;
Json_Modify:更新Json字符串中的属性值,并返回更新的Json字符串。
JSON_MODIFY(column_name, ‘$.json_field’, ‘change_info’);
复制
SELECT JSON_MODIFY(json_detail, '$.value1', 11) as json_detail from demo_plus.dbo.wm_json_demo where JSON_VALUE(json_detail, '$.key')= 7;
MySQL 插入json报错
原创
mob64ca12d4650e2023-08-31 09:18:25©著作权
文章标签JSON数据MySQL文章分类MySQL数据库阅读数232
MySQL 插入 JSON 报错
在使用 MySQL 数据库时,我们经常会遇到将 JSON 数据插入到数据库中的情况。然而,有时我们会遇到一些报错,导致插入失败。本文将介绍常见的 MySQL 插入 JSON 报错原因及解决方法,并提供相应的代码示例。
报错原因及解决方法
MySQL 支持 JSON 数据类型,并提供了一些函数和操作符用于处理 JSON 数据。然而,在插入 JSON 数据时,可能会遇到以下几种常见报错:
1. Incorrect JSON value
这个报错通常是由于插入的 JSON 数据格式不正确所导致的。要解决这个问题,首先需要确保插入的 JSON 数据是有效的,并符合 JSON 格式。其次,需要使用正确的语法将 JSON 数据插入到 MySQL 表中。
下面是一个示例,展示了如何正确插入 JSON 数据到 MySQL 表中:
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
info JSON
);
INSERT INTO customers (name, info)
VALUES ('John Doe', '{"age": 30, "email": "john@example.com"}');
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
在上面的示例中,我们创建了一个名为 customers
的表,其中包含 name
和 info
两个列。info
列的数据类型为 JSON。然后,我们使用 INSERT INTO
语句将 JSON 数据插入到表中。
2. JSON text is not properly formatted
这个报错通常是由于插入的 JSON 数据格式不正确所导致的。要解决这个问题,需要确保插入的 JSON 数据是有效的,并且符合 MySQL 的 JSON 格式要求。
下面是一个示例,展示了如何正确插入 JSON 数据到 MySQL 表中,并使用 JSON 函数验证 JSON 数据:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
details JSON
);
INSERT INTO products (name, details)
VALUES ('Apple', JSON_OBJECT('color', 'red', 'price', 0.99));
SELECT name, details
FROM products
WHERE JSON_VALID(details);
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
在上面的示例中,我们创建了一个名为 products
的表,其中包含 name
和 details
两个列。details
列的数据类型为 JSON。然后,我们使用 INSERT INTO
语句将 JSON 数据插入到表中,并使用 JSON_OBJECT
函数构建 JSON 对象。最后,我们使用 JSON_VALID
函数验证 JSON 数据是否有效。
流程图
下面是一个流程图,展示了插入 JSON 数据到 MySQL 表的整个流程:
开始创建表插入数据验证数据结束
结论
本文介绍了在 MySQL 中插入 JSON 数据时可能会遇到的报错原因及解决方法。通过确保插入的 JSON 数据是有效的,并符合 MySQL 的 JSON 格式要求,我们可以成功地将 JSON 数据插入到 MySQL 表中。希望本文能帮助读者更好地理解和解决 MySQL 插入 JSON 报错的问题。