在使用 REGEXP_REPLACE WITH LISTAGG 函数方面需要帮助

Need help in using REGEXP_REPLACE WITH LISTAGG function

WITH CTE AS (
SELECT
ID,
X.A_NO::INT AS A_NO,
REGEXP_REPLACE(TEXT_COL,'\::abcd::0|:::xyza::',' ') as TEXT_COL
FROM table X
WHERE date = '2022-02-02'
AND T_ID IN('12345','56789')
ORDER BY A_NO
)
SELECT
ID,
LISTAGG (distinct TEXT_COL , ',') WITHIN GROUP (ORDER BY TEXT_COL) AS TEXT_COL_A
FROM CTE
GROUP BY ID;

当我运行上述查询时,我得到如下所述的结果:

ID            TEXT_COL_A

12345       ,abc_xyz_ecom_data
56789     

第二行的 TEXT_COL_A 值为空。我想删除第一行中的逗号并在结果中将第二行更新为 NULL。谁能指导我如何实现这一目标?

第二个问题可以用IFNULL

解决
SELECT 'a' as a, IFNULL(a,'a was null') as b, null as c, IFNULL(c,'c was null') as d;

给出:

A B C D
a a c was null

删除内容的第一个问题是使用 TRIM 的结尾,但要仅使用开头或结尾 trim 使用 LTRIM 或 RTRIM

SELECT ',,a,,' as a, trim(a,','), ltrim(a,','), rtrim(a,',');
A TRIM(A,',') LTRIM(A,',') RTRIM(A,',')
,,a,, a a,, ,,a