今天遇到一个bug特别诡异,怎么个诡异呢,且往下看:
在网页上有个按金额大小查询数据的这么一个搜索框,一直工作的很正常,但是当客户使用金额`161.73` 查询时,就出问题了.
明明看到有这样一条数据,就是查不出来。你说奇怪不奇怪?
从前端到后端一层层排查下来,最后确定后台在Clickhouse中执行Sql语句时使用toDecimal32函数将参数转换为Decimal类型.
ClickHouse client version 20.9.3.45 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.9.3 revision 54439.cfc0cdecc0d7 :) select toDecimal32(16.73,2)
SELECT toDecimal32(16.73, 2)
┌─toDecimal32(16.73, 2)─┐
│ 16.73 │
└───────────────────────┘1 rows in set. Elapsed: 0.006 sec.
咋一看也没什么问题,差点就漏过去了。又使用161.73测试了下:
cfc0cdecc0d7 :) select toDecimal32(161.73,2)
SELECT toDecimal32(161.73, 2)
┌─toDecimal32(161.73, 2)─┐
│

在使用ClickHouse进行金额查询时遇到一个奇怪的问题:特定数值161.73查询失败,经排查发现与toDecimal32函数精度设置有关。通过调整精度参数问题得以解决。
最低0.47元/天 解锁文章
1591

被折叠的 条评论
为什么被折叠?



