是否有postgresql函数,最好是原生函数,可以将'banana'等字符串排序为'aaabnn'?
排序的算法效率并不重要,因为单词永远不会太长。但是,数据库连接效率有一些但并不重要。
答案 0 :(得分:3)
没有具有此类功能的本机功能,但您可以使用regexp_split_to_table
执行此操作:
select theword
from (select regexp_split_to_table('banana',E'(?=.)') theword) tab
order by theword;
结果将是:
theword
a
a
a
b
n
n
此(?=.)
将按每个字符拆分,并将该字符作为分隔符。它还将识别空间。如果你有一个带空格的单词并且不想要它(空格),使用E'(\\s*)'
匹配任何空格字符。我不记得E
的含义。我会尽快搜索和编辑答案。
如“regexp_split_to_table”部分DOCs中所述
编辑:正如我所说:E
在字符串之前的含义,你可以在这里看到:What's the "E" before a Postgres string?