[PostgreSQL] left()と right()

windows系のプログラムを長年やってると、文字列操作で、left()とright()のこの2つの関数がないと、どうもさびしく感じる今日この頃。
substring()を使えばできるのだけど、ついつい面倒を感じるので、ストプロ化。

といっても、きっと僕しか使わないだろうけど。

CREATE OR REPLACE FUNCTION "left"(
    p_strings                           text
  , p_position                          integer
)RETURNS text AS
$BODY$
/* ---------------------------------------------------------
プロシージャ名
    left
処理概要
    文字列 p_strings を左部分から p_position文字分を抽出した文字列
[引数]
    p_strings                           : 抽出元文字列
    p_position                          : 左から何文字目かという位置
[戻り値]
    抽出した文字列
[実行例]
SELECT left('h001001002',2) AS answer;
SELECT left('h001001002',10) AS answer;
SELECT left('全角文字',0) AS answer;
SELECT left('全角文字',1) AS answer;
SELECT left('全角文字',2) AS answer;
--------------------------------------------------------- */
DECLARE
    rtnData                             text;
BEGIN
  rtnData := substring(p_strings from 1 for p_position);
  RETURN rtnData;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100;
CREATE OR REPLACE FUNCTION "right"(
    p_strings                           text
  , p_position                          integer
) RETURNS text AS
$BODY$
/* ---------------------------------------------------------
プロシージャ名
    right
処理概要
    文字列 p_strings を右部分から p_position 文字分を抽出した文字列
[引数]
    p_strings                           : 抽出元文字列
    p_position                          : 右から何文字目かという位置
[戻り値]
    抽出した文字列
[実行例]
SELECT right('h001001002',2) AS answer;
SELECT right('h001001002',10) AS answer;
SELECT right('全角文字',0) AS answer;
SELECT right('全角文字',1) AS answer;
SELECT right('全角文字',2) AS answer;
--------------------------------------------------------- */
DECLARE
    rtnData                             text;
BEGIN
  rtnData := substring(p_strings from length(p_strings)-(p_position-1) for length(p_strings));
  RETURN rtnData;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100;
lCuOLO
2010年 1月 5日 | Posted in PostgreSQL
タグ:
  1. Dadario
    2010年 12月 14日 21:39 | #1

    LeftとRight Functionいただきました。

    substringでごちゃごちゃ書いていて・・あ~~めんどくせ~~何でこんなあったりまえに使う関数が無いかなぁって思ってぐぐっていたら見つけました(^o^)/

    助かりました!

    品番とか意味づけしてるのでアタマから何桁か取って判断するとか良く使うんですよね

    • ぷにじぃ
      2010年 12月 24日 12:12 | #2

      >Dadarioさん
      拙いソースですが、お役に立てると嬉しいです。
      コメントありがとうございました。

コメントする

XHTML: 使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">