PostgreSQLで文字数を半角文字基準で算出する。
処理内容
1.正規表現を使用して、半角カナを_
に変換
2.任意の1バイト文字(半角空白から~
まで)に合致しないものは全角文字なので、2文字分__
に変換
3.length
で文字数をカウント
SELECT length(
regexp_replace(
regexp_replace(/*column*/'ア', '[ア-ン゙゚ァ-ォャ-ョー。「」、]', '_', 'g')
, '[^ -~]'
, '__', 'g')
);
--#フラグgは、最初にマッチしたもののみではなく、それぞれマッチした部分文字列の置換を指定
全角文字基準で算出するなら2で割ればいいが、文字数が奇数だった場合に整数での計算だと切り捨てられてしまうので注意が必要。
SELECT ceil(length(...) / 2.0);
PostgreSQLの正規表現の参考サイト
http://muchag.undo.jp/archives/443