1

次のような DB テーブルがあるとします。

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

ここで、t.column_b の名前のリストで構成された文字列を、次の形式 (コンマで区切る) で保存したいと考えています。

Word A, Word B, Word C...

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

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

前もって感謝します。

4

1 に答える 1

1
  1. Informix は、データベースが MODE ANSI でない限り、制限でやみくもに切り捨てます。
  2. DBI は列のメタデータ属性を定義し、DBD::Informix はそれらを実装します。

    ステートメント ハンドル の場合$sth、次を使用できます。

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

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

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

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

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

于 2012-04-25T14:09:43.537 に答える