在 Snowflake 中使用正则表达式
Using Regular Expression in Snowflake
SELECT A.ID,LISTAGG(distinct PURCHASE_ID|| ':'||PURCHASE_AMT,',')WITHIN GROUP
(ORDER BY PURCHASE_ID|| ':'||PURCHASE_AMT) as PURCHASE_INFO_TXT
from table_1 A
JOIN table_2 B
ON B.ORD_ID=A.ORD_ID
WHERE
B.DATE = '2022-03-03'
AND PURCHASE_CD NOT IN ('0','1','2','2')
AND A.ID IN(90818774,90818789,90818999)
GROUP BY A.ID
当我 运行 上述查询时,我得到以下结果。
ID PURCHASE_INFO_TXT
90818789 2028805453:.00 off when you buy 1
90818774 2028805443:Save .00 when you buy 1
90818999 2028805403:.94 Each
结果应如下所示:
ID PURCHASE_INFO_TXT
90818789 2028805453:.00
90818774 2028805443:.00
90818999 2028805403:.94
如何实现?
使用 REGEXP_REPLACE 这可能对您有用。
select column1, fld1,REGEXP_REPLACE(fld1, '[^0-9_$:]') from (
select column1,regexp_replace(column1,'when you buy 1','') fld1 from values
('2028805453:.00 off when you buy 1 ') ,
('2028805443:Save .00 when you buy 1'),
('2028805403:.94 Each')
) ;
SELECT A.ID,LISTAGG(distinct PURCHASE_ID|| ':'||PURCHASE_AMT,',')WITHIN GROUP
(ORDER BY PURCHASE_ID|| ':'||PURCHASE_AMT) as PURCHASE_INFO_TXT
from table_1 A
JOIN table_2 B
ON B.ORD_ID=A.ORD_ID
WHERE
B.DATE = '2022-03-03'
AND PURCHASE_CD NOT IN ('0','1','2','2')
AND A.ID IN(90818774,90818789,90818999)
GROUP BY A.ID
当我 运行 上述查询时,我得到以下结果。
ID PURCHASE_INFO_TXT
90818789 2028805453:.00 off when you buy 1
90818774 2028805443:Save .00 when you buy 1
90818999 2028805403:.94 Each
结果应如下所示:
ID PURCHASE_INFO_TXT
90818789 2028805453:.00
90818774 2028805443:.00
90818999 2028805403:.94
如何实现?
使用 REGEXP_REPLACE 这可能对您有用。
select column1, fld1,REGEXP_REPLACE(fld1, '[^0-9_$:]') from (
select column1,regexp_replace(column1,'when you buy 1','') fld1 from values
('2028805453:.00 off when you buy 1 ') ,
('2028805443:Save .00 when you buy 1'),
('2028805403:.94 Each')
) ;