我在 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 负载在变体数据类型中没有“\”字符。
答案 0 :(得分:0)
据我所知,这是预期的行为。您可以使用 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