在 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') 
)  ;