- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试更新存储在 MariaDB 的 json 列中的数据(libmysql 版本 - 5.6.43,服务器:10.3.34-MariaDB-cll-lve - MariaDB 服务器)。
我的数据结构如下:
TRONG json_data 的结构如下:
{
"company": {
"id": "",
"name": "",
"address": ""
},
"info_company": {
"diff_v": "1",
"grav_v": "",
"diff_s": "2",
"grav_s": "",
"diff_g": "3",
"grav_g": "",
"diff_ri": "4",
"grav_ri": "2"
}
}
我正在尝试更新 info_company 中的数据替换:
所以结果应该是:
{
"company": {
"id": "",
"name": "",
"address": ""
},
"info_company": {
"diff_v": "<50%",
"grav_v": "",
"diff_s": "<50%",
"grav_s": "",
"diff_g": ">50%",
"grav_g": "",
"diff_ri": ">50%",
"grav_ri": "<50%"
}
}
通过编写此查询,我可以检索 info_company 数据,但是对于包含的每个键,我无法更新新值后的数据。
SELECT new_t.id, JSON_EXTRACT(new_t.json_data, “$.info_company“) FROM (SELECT * FROM `my_table` WHERE json_data LIKE “%info_company%”) new_t
Đầu ra:
感谢您的帮助。
1 Câu trả lời
您可以通过使用 CTE 生成正则表达式来匹配 info_company
中的键(和所需的匹配值)来解决此问题。然后使用 REGEXP_REPLACE
替换 1
hoặc 2
Và <50%
和一个 3
hoặc 4
Và >50%
:
UPDATE my_table
THAM GIA (
WITH jkeys_table AS (
SELECT id, JSON_KEYS(json_data, '$.info_company') AS jkeys
FROM my_table
)
SELECT id,
CONCAT('((?:',
REPLACE(SUBSTRING(jkeys, 2, CHAR_LENGTH(jkeys)-2), ', ', '|'),
')\\s*:\\s*)"([12])"'
) AS regex12,
CONCAT('((?:',
REPLACE(SUBSTRING(jkeys, 2, CHAR_LENGTH(jkeys)-2), ', ', '|'),
')\\s*:\\s*)"([34])"'
) AS regex34
FROM jkeys_table
) rt ON my_table.id = rt.id
SET json_data = REGEXP_REPLACE(REGEXP_REPLACE(json_data, regex12, '\\1"<50%"'), regex34, '\\1">50%"')
输出(对于您的示例 JSON):
id json_data
1 {
"company":
{
"id": "",
"name": "",
"address": ""
},
"info_company":
{
"diff_v": "<50%",
"grav_v": "",
"diff_s": "<50%",
"grav_s": "",
"diff_g": ">50%",
"grav_g": "",
"diff_ri": ">50%",
"grav_ri": "<50%"
}
}
如果可能的话,info_company
中的键可能存在于内部其他地方 json_data
, 您需要将更改本地化到 info_company
元素。您可以通过更改 BỘ
来做到这一点UPDATE
的条款到:
SET json_data = JSON_REPLACE(json_data, '$.info_company',
JSON_MERGE_PATCH(JSON_QUERY(json_data, '$.info_company'),
REGEXP_REPLACE(REGEXP_REPLACE(JSON_QUERY(json_data, '$.info_company'), regex12, '\\1"<50%"'), regex34, '\\1">50%"')
)
)
nếu như info_company
中的键每行都相同,您可以通过仅计算 regex12
来优化查询和 regex34
值一次,然后将这些值应用于 my_table
中的所有行使用 CROSS JOIN
:
UPDATE my_table
CROSS JOIN (
WITH jkeys_table AS (
SELECT JSON_KEYS(json_data, '$.info_company') AS jkeys
FROM my_table
LIMIT 1
)
SELECT CONCAT('((?:',
REPLACE(SUBSTRING(jkeys, 2, CHAR_LENGTH(jkeys)-2), ', ', '|'),
')\\s*:\\s*)"([12])"'
) AS regex12,
CONCAT('((?:',
REPLACE(SUBSTRING(jkeys, 2, CHAR_LENGTH(jkeys)-2), ', ', '|'),
')\\s*:\\s*)"([34])"'
) AS regex34
FROM jkeys_table
) rt
SET json_data = REGEXP_REPLACE(REGEXP_REPLACE(json_data, regex12, '\\1"<50%"'), regex34, '\\1">50%"')
关于mariadb - 使用 MariaDB 更新 Json 对象中具有特定值的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71645485/
Gần đây tôi mới bắt đầu học MongoDB. Hôm nay giáo viên dạy chúng tôi lệnh mongoexport. Trong khi thực hành, tôi đã gặp phải một vấn đề điển hình mà không có học viên nào khác, kể cả huấn luyện viên, từng gặp phải. Tôi đang sử dụng Mongo trên máy Windows 10 của mình
Tôi mới tìm hiểu về JSON Schema và đã đọc bài JSON Schema là gì cùng nhiều bài viết khác. Nhưng tôi không biết cách liên kết JSON Schema với JSON để xác thực với JSON Schema đó. Có ai có thể giải thích được điều này không?
Trong xml, tôi có thể đưa một tệp vào một tệp xml khác và sử dụng tệp đó. Nếu phần mềm của bạn lấy các tệp cấu hình từ xml nhưng không có cách nào để tách cấu hình, như apache/ngnix (nginx.conf - site-av
Tôi có một đối tượng JSON chứa một chuỗi, bản thân chuỗi này cũng là một đối tượng JSON. Tôi có thể hủy tuần tự hóa nó như thế nào? Tôi muốn có thể làm điều gì đó như thế này: #[derive(Deserialize)] struct B { c: S
Hãy xem xét JSON sau { "a": "{\"b\": 12, \"c\": \"test\"}" } Tôi muốn định nghĩa một Reader Reads[Outer[T]] chung cho lệnh nhập Json được tuần tự hóa này
đóng cửa. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại câu hỏi này không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để nó phù hợp với chủ đề của Stack Overflow. Đã đóng 11 tháng trước. Cải thiện
Dự án cũ của tôi có dữ liệu ở định dạng JSON chuẩn trong MySQL. Đối với dự án hoàn toàn mới của tôi trong JS (Node.js) và DynamoDB, liên quan đến định dạng JSON chuẩn: Có nên chuyển đổi nó thành
Chuỗi giá trị JSON, số, đúng, sai, null có phải là JSON hợp lệ không? Nghĩa là, liệu đây có thực sự là một tài liệu JSON hợp lệ không? Hay nó phải là một mảng/đối tượng? Một số trình xác thực chấp nhận điều này (ví dụ: http://jso
Tôi có một chuỗi JSON và một trong các trường là trường văn bản. Trường văn bản này có thể chứa văn bản mà người dùng nhập vào UI và nếu văn bản họ nhập là văn bản JSON, có lẽ để tính đến một số mã hóa, tôi cần mã hóa văn bản của họ để nó không
Tôi đang xử lý dữ liệu thông qua lệnh gọi IBM MQ và khi được tuần tự hóa bằng ColdFusion 10 (10,0,11,285437), 0 được trả về là +0.0, dẫn đến JSON không hợp lệ và không thể hủy tuần tự hóa. stPol
Tôi đang tạo một hàm băm từ ba mảng và sau đó cố gắng xây dựng một tệp json. Tôi đã thành công với đối tượng json có mảng. yêu cầu 'json' A = [['A1', 'A2', 'A3'],
Tôi nhận được JSON từ API và phản hồi có thể là một trong 30 loại. Mỗi loại có một tập hợp các trường riêng, nhưng tất cả các phản hồi đều có một loại trường cho biết đó là loại nào. Cách tiếp cận của tôi là sử dụng serde. Tôi tạo một cấu trúc cho mỗi loại phản hồi và
Tôi đang tải xuống tệp JSON mà tôi đã kiểm tra là JSON hợp lệ với "https://jsonlint.com" vào thư mục tài liệu. Sau đó tôi mở tệp và kiểm tra lại thì thấy tệp đó là JSON không hợp lệ. Làm sao điều này có thể xảy ra được? ? ? ? Đây là
Tôi đang cố gắng tạo động một đối tượng JSON dựa trên dữ liệu nhận được từ API. Dữ liệu mẫu đã nhận: Giải mã dữ liệu thành cấu trúc CiItems được đưa ra bên dưới { "class_name": "test", "
Tôi muốn chuyển đổi từ chuỗi sang đối tượng. Từ {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n
Hiện tại tôi đang sử dụng mã sau để chuyển đổi json lồng nhau thành json phẳng: import ( "fmt" "github.com/nytlabs/gojsonexplode" ) func
Tôi có một ứng dụng sử dụng dữ liệu từ API của bên thứ ba. Tôi cần giải mã json thành một struct, yêu cầu struct phải có thẻ json cho trường json "đến". Các trường json gửi đi có quy ước đặt tên khác nhau nên tôi cần các quy ước khác nhau
Tôi muốn sử dụng JSON Schema để xác thực một số giá trị. Tôi có hai đối tượng, gọi chúng là trackedItems và trackedItemGroups. trackedItemGroups là tên nhóm và trackedItem
Hãy xem xét lược đồ lớp trường hợp sau, lớp trường hợp Y (a: Chuỗi, b: Chuỗi) lớp trường hợp X (giả: Chuỗi, b: Y) Trường b là tùy chọn và một số tập dữ liệu của tôi không có trường.
Tôi đang lưu trữ đầu ra của lệnh cat ~/path/to/file/blah | jq tojson trong một biến để sử dụng sau này trong curl POST với nội dung JSON. Nó hoạt động tốt, nhưng nó xóa hết các ngắt dòng. Tôi biết
Tôi là một lập trình viên xuất sắc, rất giỏi!