WEBシステム開発|PHPとPostgreSQLの開発例|●2_04_09-検索処理(関数処理-3 translate、trim、case)(select)

PHPとPostgreSQLを利用したWEBシステムの開発例を掲載していきます。腕時計 販売サイト my-watch.biz



●2_04_09-検索処理(関数処理-3 translate、trim、case)(select)

ソース文字列中の変換前文字列を変換後文字列に変換します translate()

構文は以下です。
SELECT

  translate(ソース文字列 , 変換前文字列 , 変換後文字列)

FROM

  テーブル名
ソース文字列中の変換前文字列を変換後文字列に変換します。

以下のSQLを実行して下さい。
SELECT
  shouhin_coad,
  name,
  translate( top_on_flug , 'on' , '画像' ) as top_on_flug
FROM
  shouhin_t

以下のように検索されます。


 置換え前の文字数を置換え後の文字数が超える事はできません。
translate( top_on_flug , 'on' , '画像表示' ) as top_on_flug
上記で実行しても「画像表示」ではなく「画像」で置き換わります。

ソース文字列の先頭、後尾から削除対象文字列を取り除きます trim()

構文は以下です。
SELECT

  trim([leading | trailing | both] [削除対象文字列] from ソース文字列)

FROM

  テーブル名

ソース文字列の先頭、後尾から削除対象文字列を取り除きます。

leadingを指定した場合は先頭の、trailingを指定した場合は後尾の、
bothを指定した場合は両側の削除対象文字列を取り除きます。
削除対象文字列が指定されなかった場合は空白文字列が取り除かれます。 以下のSQLを実行して下さい。
SELECT
  trim(trailing '.jpg' from picture_link)
FROM
  shouhin_t

以下のように検索されます。


SQLで条件式を使う case

caseを使えばSQLで条件付けができます。
ただしSQLの発展型のPL/pgSQLで拡張した形で処理できますのでこの構文を使うかはケース・バイ・ケースです。

構文は以下です。
SELECT

  CASE

    WHEN

      カラム名(1) 演算子 値 THEN '成立した場合の値'

    WHEN

      カラム名(2) 演算子 値 THEN '成立した場合の値'

    ELSE '条件が成立しなかった時の値'

  END

FROM

  テーブル名

初めて条件式を見る人は訳が分からないかもしれません。

検索する目的は、
5,000円未満の商品は特価品になっています。
5,000円以上の商品は低価格品になっています。
6,000円以上の商品は高価格品になっています。

「これらをちゃんと明示して商品名、商品価格のリストを出してくれ。」という事にしましょう。

条件が3種類あります。条件1、条件2、条件3ですね。
並べた順番に処理されます。では、どういう順番に並べたらいいでしょう。
正解は、

6,000円以上の商品は高価格品で表示。
5,000円以上の商品は低価格品表示。
5,000円未満の商品は特価品表示。

いや、こう書いたらいいのでは・・・、と思う人もいますよね。

6,000円以上の商品は高価格品で表示。
6,000円未満、5,000円以上の商品は低価格品表示。
5,000円未満の商品は特価品表示。

しかし、6,000円未満は書く必要はありません。
なぜなら1行目は6,000円以上は相手にしますが、それ以外は何もしませんから。

とにかく、色々なパターンを考えてSQLを実行して下さい。長々と文章を読むよりこっちの方が早いです。

実際のSQLを下記に示します。区切りで「全角スペース」を使っています、削除して実行して下さい。
SELECT

  name,

  kakaku,

  CASE

    WHEN kakaku >= 6000 THEN '高価格品'

    WHEN kakaku >= 5000 THEN '低価格品'

  ELSE '特価品' END

FROM

  shouhin_t

  ORDER BY kakaku

以下が実行結果です。


単一テーブルからの検索処理はだいたいここまでで対処できると思います。
ただし関数についてはもっと種類があります。延々と演習を続けても意味が無いので正規マニュアルを最後に示しておきます。

第9章関数と演算子

非常にボリュームが多いですが全て記憶する必要はありません、(というより無理です)ざっと目を通して必要な時に調べられる程度でいいと思います。


戻る

Copyright (c) 2007 MSweb All Rights Reserved

腕時計 クロノグラフ(時計)のメンズ専門販売サイトカシオ G-SHOCK、Baby-G(腕時計)専門の通信販売サイトG-SHOCK、Baby-G専門通販サイト 運営ブログ

腕時計 女性専用 販売のladies-watch.biz腕時計 メンズ(男性)専門販売のmens-watch.biz