2012-04-25 76 views
1

假設你有一個數據庫表是這樣的:可以檢索varchar(n)列的最大聲明大小嗎?

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

現在,我要存儲一個由上t.column_b名稱列表組成的字符串,格式如下(用逗號隔開):

​​

的問題是,它可能是字符串的長度超過255個字符,在我的應用程序邏輯,我不希望盲目修剪到255多的情況下,而是存儲的話可能的最大數量,消除超過大小的最後一個詞。另外,我想以這樣的方式開發,如果列更改大小,我不想更改我的應用程序。是否可以編寫一個SQL查詢來檢索列的聲明大小?或者,我應該使用另一種列類型?

如果相關,我正在使用Informix。

在此先感謝。

回答

1
  1. Informix會盲目地在極限處截斷,除非您的數據庫是MODE ANSI。
  2. DBI爲列定義元數據屬性,DBD :: Informix實現它們。

    對於語句句柄,$sth,你可以使用:

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

    獲得在輸出的第一列的精度(長度)。

請參閱perldoc DBI'語句句柄屬性'。

如果您需要知道某個列的類型信息,請編寫一個SELECT語句,準備它,然後分析語句句柄。

因爲這是由DBI定義的,所以您將獲得與任何驅動程序(DBD :: YourDBMS)相同的行爲。

+0

尼斯解釋:)。非常感謝 – jlemos 2012-04-26 09:03:59