获取列中的字符列表

ben*_*nos 8 postgresql

我有一个数据库表 (UTF-8),其中有很多不同语言的名称和很多特殊字符。在另一个脚本中,我使用这些名称,其中一部分是替换特殊字符。要知道所有出现的字符,我需要从某个地方获取它们的列表。

是否可以获得列中出现的不同字符列表?PostgreSQL 中的方法是什么?

例如,我有一个带有名称的表:

id | name
-----------
1  | Peter
2  | Andrea
3  | Bob
Run Code Online (Sandbox Code Playgroud)

结果列表将是

petrandbo
Run Code Online (Sandbox Code Playgroud)

顺序不重要,但可以按字母顺序排列

a_h*_*ame 13

select string_agg(c,'')
from (
  select distinct regexp_split_to_table(lower(name),'') as c
  from data
) t
Run Code Online (Sandbox Code Playgroud)

内部选择为每个字符生成一行,然后外部选择将其聚合为一个长字符串。

如果要对字符进行排序,可以使用 order by 进行聚合 string_agg(c,'' order by c)