sql >> データベース >  >> RDS >> PostgreSQL

PostgresqlORDERBYスペース

    わからない、次のようなものかもしれません:

    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]
    

    sqlフィドルデモ

    これは文字列をスペースで分割して配列にし、最初のエントリを数値に変換し、この数値と残りの文字列で結果を並べ替えます



    1. 大きなCSVファイルをMySQLにインポートする

    2. カンマ区切り値を検索する方法

    3. SQL検索クエリをより強力にする方法は?

    4. MySQLは最新の行のみに参加しますか?