我正在尝试提取Firebird 1.5表的结构。我设法获取数据,但是有一个字段显示IBExpert数字如何,我的选择显示双精度。该字段为TR_VALOR。 SQL返回十进制和IBExpert DDL数字。返回select * from RDB$TYPES where RDB$TYPE = 27,这是:RDB $ TYPE_NAME = Double。为什么会有这种差异?两种情况如何返回相同?SQL:SELECT a.RDB$FIELD_NAME Coluna, RDB$TYPE_NAME Tipo, RDB$FIELD_LENGTH Tamanho, RDB$FIELD_SCALE Escala, b.*FROM RDB$RELATION_FIELDS a JOIN RDB$FIELDS b ON b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE inner join RDB$TYPES c on c.RDB$TYPE = b.RDB$FIELD_TYPEWHERE a.RDB$RELATION_NAME = 'TRANSACAO' and c.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'order by a.RDB$FIELD_POSITION;SQL结果:IBExpert DDL: 最佳答案 对于NUMERIC或DECIMAL(基本相同),系统表中相当混乱。如果sub_type为1,则定义为NUMERIC;如果为2,则为DECIMAL。如果为0,但SCALE 0,则可以将其视为NUMERIC。如果子类型= 0且小数位数= 0,则为原始DOUBLE。请注意,TYPE也可以是7(int16),8(int32)或16(int64)。与上述相同。当创建这种数据类型的新列时,Firebird会尝试使规格符合最小的本机数据类型,因此int16,int32,int64和方言1中的值都是两倍。希望这可以帮助。
10-08 09:48