2012-04-25 8 views
1

は、あなたがこのようなDBのテーブルがあるとします。varchar(n)列の最大宣言サイズを取得することは可能ですか?

Table t 
.... 
column_a  integer 
column_b  varchar(255) 
.... 

さて、私は(カンマで区切られた)次の形式で、t.column_b上の名前のリストで構成された文字列を格納したい:

​​

問題は、文字列が255文字より大きく、アプリケーションロジックで盲目的に255にトリムするのではなく、可能な限り最大数の単語を保存することですサイズを超える最後の単語。また、列のサイズが変わった場合、アプリケーションを変更したくないというような方法で開発したいと考えています。宣言された列のサイズを取得するSQLクエリを記述することは可能ですか?あるいは、別の列タイプを使用する必要がありますか?

関連する場合は、Informixを使用しています。

ありがとうございます。

答えて

1
  1. データベースがMODE ANSIでない限り、Informixは限界で盲目的に切り詰めます。
  2. DBIは列のメタデータ属性を定義し、DBD :: Informixがそれらを実装します。ステートメントハンドルの

    $sth、あなたが使用することができます。

    $sth->{PRECISION}->[0] 
    

    を出力の最初の列の精度(長さ)を取得します。

「ステートメントハンドル属性」のperldoc DBIを参照してください。

一部の列の型情報を知る必要がある場合は、SELECT文を作成して準備し、文ハンドルを分析します。

これはDBIによって定義されているため、どのドライバ(DBD :: YourDBMS)でも同じ動作をします。

+0

いいえ説明:)。どうもありがとう – jlemos

関連する問題