[pgsql-jp: 34064] Re: データサイズの取得方法

Takao Kato sirius @ jp.fujitsu.com
2004年 10月 6日 (水) 10:30:01 JST


加藤@川崎です。

一部誤解があるようなので.....


>  varchar(n)の様に宣言した列に(nは、実際には整数値) 半角+全角を含む
> 文字列を登録する際、宣言時に指定した最大バイト数である「n バイト」を越える
> 文字列を登録しないように予めPHPで制限したいと考えています。

varchar(n)の n は文字数ですよね。ですから、

>  PHPにマルチバイト文字関数を組込んでいない場合はPHPのstrlen()関数で
> バイト数が得られるようですが、マルチバイト文字関数を組込んでいる場合は
> strlen()関数はmb_strlen()関数にオーバーロードされるらしく、
> バイト数ではなく文字数が返るようになるため、文字列のバイト数を評価する
> 別の方法を用意する必要がありそうです。

はわざわざmb_eregで小細工しなくてもmb_strlenでも問題ないと思いますが。

それと、PHP側で手を入れたくないとのことでしたが、DB設計の話ですから、
それにあわせてconfig.phpなりの設定用ファイルを準備しておいて、それを呼
び出すか、あるいは、システムパラメータを保存しておくテーブルを準備して、
それを読みだすのが筋だと思います。


あと、PostgreSQLのどのバージョンだったか忘れましたが、バージョンによっ
ては「エラーになる」と「無理矢理容量分だけ入れる」の動きをします。最新
のバージョンは前者の動作となります。

ではでは
-------------------------------------------------------------
加藤@川崎



pgsql-jp メーリングリストの案内