假设你有一个这样的数据库表:
Table t
....
column_a integer
column_b varchar(255)
....
现在,我想存储一个由 t.column_b 上的名称列表组成的字符串,格式如下(用逗号分隔):
Word A, Word B, Word C...
问题是,字符串可能大于 255 个字符,在我的应用程序逻辑中,我不想盲目修剪为 255,而是存储尽可能多的单词,消除最后一个超过大小的单词。另外,我想以这样一种方式进行开发,即如果列更改大小,我不想更改我的应用程序。是否可以编写检索列的声明大小的 SQL 查询?或者,也许我应该使用另一种列类型?
如果相关,我正在使用Informix。
提前谢谢。
- Informix 会在限制处盲目截断,除非您的数据库是 MODE ANSI。
-
DBI 定义列的元数据属性,DBD::Informix 实现它们。
对于语句句柄,
$sth
,可以使用:$sth->{PRECISION}->[0]
获取输出中第一列的精度(长度)。
请参阅"语句句柄属性"下的perldoc DBI
。
如果需要知道某些列的类型信息,请编写一个 SELECT 语句,准备它,然后分析语句句柄。
因为这是由DBI定义的,所以你将得到与任何驱动程序(DBD::YourDBMS)相同的行为。