[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;
LeftとRight Functionいただきました。
substringでごちゃごちゃ書いていて・・あ~~めんどくせ~~何でこんなあったりまえに使う関数が無いかなぁって思ってぐぐっていたら見つけました(^o^)/
助かりました!
品番とか意味づけしてるのでアタマから何桁か取って判断するとか良く使うんですよね
>Dadarioさん
拙いソースですが、お役に立てると嬉しいです。
コメントありがとうございました。