1

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

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. 除非您的数据库是 MODE ANSI,否则 Informix 会在限制处盲目截断。
  2. DBI 为列定义元数据属性,而 DBD::Informix 实现它们。

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

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

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

请参阅perldoc DBI“语句句柄属性”下。

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

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

于 2012-04-25T14:09:43.537 回答