【PostgreSQL】文字列のバイト数を取得する
文字列のバイト数を取得する
文字列をバイト数で計算します。
あわせて読みたい
自作関数ではなく構文はこちらを参照して下さい
引数
引数1(character varying):対象の文字列
引数2(integer):全角のカウント方法の指定
1:全角1文字 = 2バイトで計算 1以外:全角1文字 = 3バイトで計算
返り値
バイト数
コード
CREATE OR REPLACE FUNCTION count_char_byte(
c_target_char character varying,
i_flg integer)
RETURNS numeric AS
$BODY$
declare
BEGIN
if i_flg = 1 then
--1:全角1文字=2バイトで計算
return length(
regexp_replace(
regexp_replace(c_target_char, '[ア-ン゙゚ァ-ォャ-ョー。「」、]', '_', 'g')
, '[^ -~]'
, '__', 'g')
);
else
--その他:全角1文字=3バイトで計算
return octet_length(c_target_char);
end if;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION count_char_byte(character varying, integer)
OWNER TO postgres;
※PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら
実行例
select * From count_char_byte('あいuえお',1); --全角1文字=2バイトで計算
--【結果】:9
select * From count_char_byte('あいuえお',2); --全角1文字=3バイトで計算
--【結果】:13