PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql ORDER BY spacje

Nie wiem, może wyglądać mniej więcej tak:

with cte as (
   select col1, regexp_split_to_array(col1, ' ') as d
   from Table1

)
select col1
from cte
order by
    d[1] ~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$' desc,
    case
        when d[1] ~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$' then
            d[1]::numeric
    end,
    d[2]

demonstracja skrzypiec sql

ten dzieli ciąg przez spacje na tablicę, konwertuje pierwszy wpis na numeryczny i sortuje wyniki według tej liczby i pozostałego ciągu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapytanie z podzapytaniem count, sprzężeniem wewnętrznym i grupą

  2. Jak działa Width_Bucket() w PostgreSQL

  3. Jak znaleźć nazwę bazy danych folderów \data\base postgres?

  4. BŁĄD:nie można załadować biblioteki „/opt/PostgreSQL/9.0/lib/postgresql/plperl.so”:libperl.so:

  5. Utwórz dużą liczbę całkowitą z dużego końca identyfikatora uuid w PostgreSQL