正则表达式以查找列中的空值(&QOOT;NULL&QOOT;VALUE) [英] regex to find "null" values from a column
本文介绍了正则表达式以查找列中的空值(&QOOT;NULL&QOOT;VALUE)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一列JSON_DATA
。此列中的值具有对象类型。它包含一个json。此查询运行正常:
SELECT
$1 AS "JSON_DATA"
FROM TEST_TABLE
数据可能如下所示:
{
"Type": "xxi",
"Quantity": "null",
"ContactPerson": "null",
"Email": null
}
此字段中的某些值为";null";。我要搜索带引号的&nulls";的所有匹配项,并将它们替换为正确的空值/regex_place。
期望的输出结果:
{
"Type": "xxi",
"Quantity": NULL,
"ContactPerson": NULL,
"Email": null
}
我尝试过:
SELECT
REGEXP_REPLACE( $1 , "null", NULL) AS "JSON_DATA"
FROM TEST_TABLE
但是我收到一个错误:
SQL Error [904] [42000]: SQL compilation error: error line 2 at position 22
invalid identifier '"null"'
我认为这是因为第二个参数中的&null";不是任务的正确正则表达式。我如何修复此问题?
编辑:
我还尝试了这个:
SELECT
REGEXP_REPLACE( $1 , '"null"', NULL) AS "JSON_DATA"
FROM TEST_TABLE
但是,对于所有行,最终结果只是NULL,而不是在每行的json对象中查找并替换所有&null";。
推荐答案
双引号需要为普通字符串
SELECT
REGEXP_REPLACE( $1 , '"null"', NULL) AS "JSON_DATA"
FROM TEST_TABLE
如您所知,DB正在查找名为null
的列,即Snowflake读作双引号。
您可能还希望查看STRIP_NULL_VALUE和/或IF_NULL_VALUE
显示如何通过REGEXP_REPLACE屠宰JSON
不是说您应该这样做,但是您还没有说出您真正想做的事情:
SELECT
column1,
parse_json(column1) as json,
REGEXP_REPLACE( json::text , '"null"', '"DOGS"') AS fiddled_string,
parse_json(fiddled_string) as back_to_json_data_again
FROM VALUES ('{
"Type": "xxi",
"Quantity": "null",
"ContactPerson": "null",
"Email": null
}')
给予:
COLUMN1 | JSON | fiddled_string | Back_to_JSON_Data_Again |
---|---|---|---|
{";Type";:";xxi";,";Quantity";:";null";,";ContactPerson";:";null";,";email";:null} | {";ContactPerson";:";null";,";email";:null,";Quantity";:";null";,";Type";:";xxi";} | {";ContactPerson";:";DOGS";,&Quot;电子邮件&Quot;:空,&Quot;数量&Quot;:&Quot;狗&Quot;,&Quot;类型&Quot;:&Quot;xxi&Quot;} | {";ContactPerson&Quot;:";Dogers&Quot;,";Email&Quot;:NULL,&Quot;Quantity&Quot;:&Quot;Drivers&Quot;,&Quot;Type&Quot;:&Quot;xxi";} |
这篇关于正则表达式以查找列中的空值(&QOOT;NULL&QOOT;VALUE)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文