是否可以检索varchar(n)列的最大声明大小?

时间:2012-04-25 13:59:52

标签: sql informix

假设您有一个这样的数据库表:

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

现在,我想存储一个由t.column_b上的名称列表组成的字符串,格式如下(用逗号分隔):

Word A, Word B, Word C...

问题是,可能是字符串大于255个字符的情况,在我的应用程序逻辑中,我不想盲目修剪为255,而是存储可能的最大字数,从而消除了最后一个字超过了大小。此外,我想以这样的方式开发:如果列更改大小,我不想更改我的应用程序。是否可以编写一个检索列的声明大小的SQL查询?或许,我应该使用另一种列类型?

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. Informix会在限制时盲目截断,除非您的数据库是MODE ANSI。
  2. DBI定义列的元数据属性,DBD :: Informix实现它们。

    对于语句句柄$sth,您可以使用:

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

    获取输出中第一列的精度(长度)。

  3. 请参阅“声明处理属性”下的perldoc DBI

    如果您需要知道某些列的类型信息,请编写SELECT语句,准备它,然后分析语句句柄。

    因为这是由DBI定义的,所以您将获得与任何驱动程序(DBD :: YourDBMS)相同的行为。