• 締切済み

plpgsqlでのbyte数指定での文字切り出し

postgresql(plpgsql)にて、byte数指定での文字列切り出しを行いたいのですが、よい手法などありませんか? substr(substring)だと、文字数の指定となり、対象がマルチバイト、シングルバイト文字混在だと意図した値が取得できません。 ※Oracleのsubstrbに相当するものです。 ※select substr(カラム, 1, 20) from ...的な取得がしたいです。 よろしくお願いします。

みんなの回答

  • f_user
  • ベストアンサー率33% (1/3)
回答No.1

マルチバイト項目をシングルバイト項目にキャストすればよいと思います。 以下のSQLで試してみよう。 --- SELECT nickname ,substring(nickname ,1,5) ,substring(nickname::bytea ,1,5) FROM data; --- nicknameには、動作比較のためにシングルバイト文字列とマルチバイト文字列を入れてください。 --- 123456789 あかさたな --- utf8で作ったDBに上記の2行を入れたとすると --- 12345,12345 あかさたな,"\343\201\202\343\201" --- と表示されると思います。 SQL文ですが、plpgsqlでも使えるかと。 利用するバージョンの明記がありませんが、8系列以降であれは大丈夫だと思います。 ※最低限利用するバージョンは書こうね

関連するQ&A