1.string_agg.字段拼接在一起
select string_agg(role_id, ',') from portal_role

2.字符串分隔成table
select regexp_split_to_table('1,2,3', ',')
3.字符串分隔成數組
select regexp_split_to_array('1,2,3', ',')
4.樹結構封裝
WITH RECURSIVE T (user_id, user_name, cn_name) AS (
SELECT
sua.user_id,
sua.user_name,
sua.cn_name,
sua.MANAGER_ACCOUNT_ID
FROM
SYSTEM_USER sua
WHERE
sua.user_id = 'cf2dcc613c544ab6a10aefe069a78dce'
UNION ALL
SELECT
sub.user_id,
sub.user_name,
sub.cn_name,
sub.MANAGER_ACCOUNT_ID
FROM
SYSTEM_USER sub
JOIN T ON sub.MANAGER_ACCOUNT_ID = T .user_id
) SELECT
user_id as userId,
manager_account_id AS pId,
user_name AS userName,
cn_name
FROM
T
5.逗號分隔的字符串轉table。并使用in方法判斷
SELECT
string_agg (r.role_name, ',') role_name
FROM
t_role r
WHERE
r.role_id IN (
SELECT
UNNEST (string_to_array(#{roleIds}, ','))
)