我有下表:
<conio.h>
具有以下值:
id: BIGINT
value: DOUBLE
test: VARCHAR
在我的postgresql shell中运行以下SQL注释,得到的结果与在Liquibase id: 1
value: 0.99
test: ''
标记中运行它的结果不同:
<sql>
如果直接在SQL Shell中运行它,我得到的测试值就是UPDATE myTable SET test=concat('value=', value);
,但是如果我在Liquibase value=0.99
标记中运行相同的SQL命令,则会得到<sql>
>
显然这是一个浮点错误,但是如果我使用value=0.98999999999999999
,为什么Liquibase会给出不同的结果?结果不应该一样吗?
答案 0 :(得分:0)
如果您执行的是完全相同的SQL字符串,我期望得到相同的结果。但是,您提供value
作为其变量由Liquibase处理的变量,因此与包含数据库执行的数字文字的原始查询字符串相比,可能是Liquibase数字解析有所不同。
如果您使用类似value: '0.99'
和... SET test=concat('value=', CAST(value AS double precision))
的方法,则可能会得到相同的结果。