就是这么诡异记ClickhoutoDecimal引起的⼀个问题今天遇到⼀个bug特别诡异,怎么个诡异呢,且往下看:
在⽹页上有个按⾦额⼤⼩查询数据的这么⼀个搜索框,⼀直⼯作的很正常,但是当客户使⽤⾦额`161.73` 查询时,就出问题了.明明看到有这样⼀条数据,就是查不出来。你说奇怪不奇怪?
从前端到后端⼀层层排查下来,最后确定后台在Clickhou中执⾏Sql语句时使⽤toDecimal32函数将参数转换为Decimal类型.
ClickHou client version 20.9.3.45 (official build).
Connecting to localhost:9000 as ur default.
Connected to ClickHou rver version 20.9.3 revision 54439.
cfc0cdecc0d7 :) lect toDecimal32(16.73,2)
SELECT toDecimal32(16.73, 2)
┌─toDecimal32(16.73, 2)─┐
搁浅周杰伦歌词
│ 16.73 │
└───────────────────────┘
1 rows in t. Elapd: 0.006 c.
咋⼀看也没什么问题,差点就漏过去了。⼜使⽤161.73测试了下:
cfc0cdecc0d7 :) lect toDecimal32(161.73,2)
庆元旦迎新年手抄报SELECT toDecimal32(161.73, 2)
┌─toDecimal32(161.73, 2)─┐
秋天的花朵│ 161.72 │
起跑线观后感
└────────────────────────┘
1 rows in t. Elapd: 0.003 c.
春梅就是这么神奇,161.73变161.72啦,才注意到时 toDecimal32(,2),换成toDecimal32(,3),问题解决: cfc0cdecc0d7 :) lect toDecimal32(161.73,3)
SELECT toDecimal32(161.73, 3)
┌─toDecimal32(161.73, 3)─┐民事起诉状格式
wto的意思│ 161.730 │
└────────────────────────┘
1 rows in t. Elapd: 0.00
2 c.
在看下Clichou官⽹关于toDeciaml函数的解释:
实际⽤的时候s最好还是设置的⽐实际值⼤⼀点,这样⽐较保险.乱世佳人女主角