sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql Funktion för att sortera tecken i en sträng

Det finns ingen inbyggd funktion med sådan funktionalitet men du kan använda regexp_split_to_table att göra så här:

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

Resultatet blir:

theword
   a
   a
   a
   b
   n
   n

Denna (?=.) kommer att delas av varje tecken och lämnar tecknet som separator. Det kommer också att identifiera utrymmen. Om du har ett ord med mellanslag och inte vill ha det (mellanrummet) använd E'(\\s*)' matchar alla blanksteg. Jag kommer inte ihåg vad E är betyder att. Jag kommer att söka och redigera svaret snarast.

Som förklaras i DOC:erna i avsnittet "regexp_split_to_table"

EDIT:Som jag sa:Innebörden av E före strängen kan du se här:What's the " E" före en Postgres-sträng?




  1. Optimera SQL som använder mellan-sats

  2. org.postgresql.util.PSQLEundantag:FEL:relation app_user existerar inte

  3. Oracle.ManagedDataAccess med Oracle 8.1.7 DB

  4. Är INSERT RETURNING garanterat att returnera saker i rätt ordning?