PostgreSQL 文字列を順番にソート

NO IMAGE

PostgreSQL ver 8.4 で動作済み

以下のように数字が入っている文字列を昇順・降順したいと思います。

 例 )
  jaswill1
  jaswill2
  jaswill3

【文字列ソート】

 ORDER BY
    TO_NUMBER ( SUBSTRING ( USR_ID FROM ‘[0-9].*$’ ) , ‘[9]’ ) , USR_ID


ORDER NY句に記述されている「SUBSTRING」で部分文字列(後ろの‘[9]’)を取得し、

「TO_NUMBER」で数値に変更しています。FORM句では条件に該当するものを取得します。

あとは昇順か降順かをORDER BY句に追記するだけです。

あと、よくあるのが重複チェックですね。

せっかくなので、メモメモ φ(。。)

【重複データ取得】————————————————————–

 SELECT
    A.USR_ID AS USR_ID
 FROM
    TABLE_A A
 WHERE
    A.DELETE_FLG = 0
 GROUP BY
    A.USR_ID
 HAVING
    COUNT ( A.USR_ID )  >  1 
—————————————————————————————

 っで、↑コレを【文字列ソート】と組み合わせると・・・

【重複データの文字列ソート】————————————————

 SELECT
    A.USR_ID AS USR_ID
 FROM

    TABLE_A A
 WHERE

    A.DELETE_FLG = 0
    AND

    EXISTS
    (  SELECT
         AA.USR_ID AS USR_ID
     FROM

         TABLE_A AA
     WHERE

          AA.USR_ID = A.USR_ID
     GROUP BY

                    AA.USR_ID

     HAVING

                   
COUNT ( AA.USR_ID )  >  1
    )
 ORDER BY
     TO_NUMBER ( SUBSTRING ( A.USR_ID FROM ‘[0-9].*$’ ) , ‘[9]’ ) , A.USR_ID
    ,A.USR_ID DESC(ASC)

—————————————————————————————

・・・雑だけど気にしない。

これで、重複した文字列をソートできます。

分かりやすいように、ナンバー(No)とかつけると、順番になっている事が分かりやすいと思います。

ちょっとした備忘録です。