sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql Funkce pro řazení znaků v řetězci

Neexistuje žádná nativní funkce s takovou funkcí, ale můžete použít regexp_split_to_table udělat to takto:

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

Výsledek bude:

theword
   a
   a
   a
   b
   n
   n

Toto (?=.) se rozdělí každým znakem a ponechá znak jako oddělovač. Bude také identifikovat prostory. Pokud máte slovo s mezerami a nechcete ho (mezera), použijte E'(\\s*)' odpovídá libovolnému znaku mezery. Nepamatuji si, co je E prostředek. Vyhledám a upravím odpověď co nejdříve.

Jak je vysvětleno v dokumentech DOC v sekci "regexp_split_to_table"

EDIT:Jak jsem řekl:Význam E před řetězcem můžete vidět zde:Co je to " E“ před řetězcem Postgres?




  1. Poddotaz SQL vrátí více než 1 řádek

  2. Jak znovu přiřadit sloupec AUTO_INCREMENT pro každý řádek v tabulce MySQL pomocí PHP

  3. Jak přimějete PyPy, Django a PostgreSQL ke spolupráci?

  4. Při vkládání dat do SQLite převeďte hodnoty NULL na výchozí hodnotu sloupce