PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonction Postgresql pour trier les caractères dans une chaîne

Il n'y a pas de fonction native avec une telle fonctionnalité mais vous pouvez utiliser regexp_split_to_table pour le faire comme ceci :

select theword 
  from (select regexp_split_to_table('banana',E'(?=.)') theword) tab 
 order by theword;

Le résultat sera :

theword
   a
   a
   a
   b
   n
   n

Ce (?=.) sera divisé par chaque caractère en laissant le caractère comme séparateur. Il identifiera également les espaces. Si vous avez un mot avec des espaces et que vous ne le voulez pas (l'espace) utilisez E'(\\s*)' correspond à n'importe quel caractère d'espacement. Je ne me souviens pas ce que le E moyens. Je vais rechercher et modifier la réponse dès que possible.

Comme expliqué dans les DOC dans la rubrique "regexp_split_to_table"

EDIT :Comme je l'ai dit :la signification du E avant la chaîne, vous pouvez voir ici :Quel est le " E" devant une chaîne Postgres ?