json - 雪花 VARCHAR 到 VARIANT 插入“\”字符
问题描述
我在 varchar 列中有一些原始数据,但是当我在其上运行 to_variant() 函数时,数据会发生巨大变化。例如。
此 json 数据存储在 varchar 中
{
"event_detail": {
"event_name": "quote_created",
"id": "679cc110-1c06-4f7d-aeed-1f637c0eff2d",
"source": "Quote service",
"timestamp": {
"nanos": 730693300,
"seconds": 1603366821
}
}
变成了这个
"{
\"event_detail\": {
\"event_name\": \"quote_created\",
\"id\": \"679cc110-1c06-4f7d-aeed-1f637c0eff2d\",
\"source\": \"Quote service\",
\"timestamp\": {
\"nanos\": 730693300,
\"seconds\": 1603366821
}
}"
有没有人见过这个?它使解析变体变得非常困难?我之前还看到过在变体数据类型中存储的第一个没有“\”字符的 json 有效负载。
解决方案
据我所知,这是预期的行为。您可以使用 parse_json 函数,而不是使用 to_variant 函数将 varchar 转换为变量。在这种情况下,很容易解析:
select parse_json('{ "event_detail": {
"event_name": "quote_created",
"id": "679cc110-1c06-4f7d-aeed-1f637c0eff2d",
"source": "Quote service",
"timestamp": {
"nanos": 730693300,
"seconds": 1603366821 }}}'):event_detail.event_name::String;
这将返回:quote_created
推荐阅读
- php - 删除表后如何重新迁移laravel迁移
- linux - 将标记的数据包预路由到 docker 容器内的环回接口
- postgresql - “INSERT INTO ... FETCH ALL FROM ...”无法编译
- stripe-payments - Stripe - 一次性卡和延迟收费
- c# - (Web API Post 方法)异常处理
- php - 在本地使用 Docker Compose 时如何将所有 stderr 日志保存到文件中
- python - Pytest 参数化依赖
- java - 我无法将数据从第一个活动 (MapActivity) 发送到第二个活动 (NewContact)
- symfony - 用一个表单修改多个实体(批量编辑)
- java - 如何为我的 JTextArea 添加 JScrollPane?