PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgresql ORDER BY spasi

Entahlah, mungkin seperti ini:

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]

demo biola sql

yang ini membagi string dengan spasi menjadi array, mengonversi entri pertama menjadi numerik dan mengurutkan hasil berdasarkan nomor ini dan string yang tersisa



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL regexp_replace() untuk menyimpan hanya satu spasi

  2. Postgresql - Bagaimana cara mempercepat pembaruan tabel besar (100 juta baris)?

  3. Kesalahan saat mengatur n_distinct menggunakan variabel plpgsql

  4. Permintaan asli operator JPA dan JSON

  5. Masukkan seluruh nilai massal DataTable ke dalam tabel postgreSQL