以下是一个达梦数据库(DM V8)中关于 JSON 字段的 SQL 示例,包括数据脱敏、更新 JSON 字段、删除 JSON 键与值、查询 JSON 中的一个键,以及一些日常使用的示例。其他成熟的数据库一般也支持类似的函数。自己GPT处理下即可。
本文涉及一些函数
JSON_VALUE:https://eco.dameng.com/document/dm/zh-cn/pm/json#18.2.1.2%20json_value
JSON_QUERY:https://eco.dameng.com/document/dm/zh-cn/pm/json#18.2.1.3%20json_query
1. 数据脱敏示例
假设你的表名为 USER_DATA,有一个 JSON 字段 USER_INFO,其中包含用户的敏感信息。我们将对 email 字段进行脱敏处理。
UPDATE USER_DATA
SET USER_INFO = JSON_MODIFY(USER_INFO, '$.email', '****@example.com')
WHERE USER_INFO IS NOT NULL;
2. 更新 JSON 字段示例
假设你想在 JSON 字段 USER_INFO 中添加一个新的键 lastLogin,并设置其值为当前时间。
UPDATE USER_DATA
SET USER_INFO = JSON_MODIFY(USER_INFO, '$.lastLogin', CURRENT_TIMESTAMP)
WHERE USER_INFO IS NOT NULL;
3. 删除 JSON 键与值示例
如果你想删除 address 键及其对应的值,可以使用以下 SQL:
UPDATE USER_DATA
SET USER_INFO = JSON_MODIFY(USER_INFO, 'delete $.address', NULL)
WHERE USER_INFO IS NOT NULL;
4. 查询 JSON 中的一个键示例
如果你想查询 JSON 字段 USER_INFO 中的 username 值,可以使用以下 SQL:
SELECT JSON_VALUE(USER_INFO, '$.username') AS username
FROM USER_DATA
WHERE USER_INFO IS NOT NULL;
5. 日常使用示例
查询所有用户的敏感信息(脱敏后)
SELECT
JSON_VALUE(USER_INFO, '$.name') AS name,
JSON_VALUE(USER_INFO, '$.email') AS email, -- 这里的 email 已经脱敏
JSON_VALUE(USER_INFO, '$.lastLogin') AS lastLogin
FROM USER_DATA
WHERE USER_INFO IS NOT NULL;
统计用户数量
SELECT COUNT(*) AS user_count
FROM USER_DATA
WHERE USER_INFO IS NOT NULL;
总结
- 数据脱敏:通过更新 JSON 字段来隐藏敏感信息。
- 更新 JSON 字段:可以添加新键或更新现有键。
- 删除 JSON 键:可以使用
JSON_MODIFY删除不需要的键。 - 查询 JSON 键:使用
JSON_VALUE提取特定的值。
JsonQuery
SELECT
JSON_QUERY('[{"name":"1","value":"1"},{"name":"2","value":"2"}]', '$.value' WITH WRAPPER)
FROM
dual;

真实使用
[{"food":{"name":"西瓜"}}]
[{"food":[{"name":"西瓜"},{"name":"东瓜"},]}]
SELECT
JSON_QUERY(hobbit, '$.food.name' WITH WRAPPER)
FROM
SOME_USER
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
