不一致的查询结果

使用以下命令部署OceanBase,并且连接

docker pull oceanbase/oceanbase-ce:4.3.5-lts
docker run -p 2881:2881 --name oceanbase-ce -d oceanbase/oceanbase-ce:4.3.5-lts
mysql -h127.0.0.1 -P12881 -uroot@test  # Connect with the root account of a general tenant

运行一下四个测试用例
测试用例1:

CREATE TABLE t1 (c1 SMALLINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) DIV c1 / c1 FROM t1; -- {0.0000}

测试用例2:

CREATE TABLE t1 (c1 MEDIUMINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) DIV c1 / c1 FROM t1; -- {15018262206843.5189}

测试用例3:

CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) DIV c1 / c1 FROM t1; -- {5804842684.4691}

测试用例4:

CREATE TABLE t1 (c1 BIGINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) DIV c1 / c1 FROM t1; -- {-122.0466}

为什么这些查询语句返回了不同的结果,我预期的行为是返回相同的结果。

1 个赞

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003383845
有关conv的使用说明

1 个赞

我尝试单独运算CONV函数,这些测试用例得到了相同的结果
测试用例1:

CREATE TABLE t1 (c1 SMALLINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) FROM t1; -- {1777777777777777455500}

测试用例2:

CREATE TABLE t1 (c1 MEDIUMINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) FROM t1; -- {1777777777777777455500}

测试用例3:

CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) FROM t1; -- {1777777777777777455500}

测试用例4:

CREATE TABLE t1 (c1 BIGINT);
INSERT INTO t1 VALUES (-10880);
SELECT CONV(c1, 18, 8) FROM t1; -- {-1777777777777777455500}
1 个赞

学习了

image
你好我这边425测试结果都是一致的,435与你的一致。
这边反馈一下给研发稍等