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