oct*_*bus 2 mysql sql jdbc clojure
我有一个返回行的Clojure查询,这里是返回行(map)的部分打印输出.
({:employer_percent 0.00M, ... :premium 621.44M, ...})
这两列分别是mysql表中的十进制(5,2)和十进制(7,2).
为什么在每个值的末尾都有一个'M'后缀?这是形成和执行查询的代码.
(def db {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname "//system/app"
:user "app-user"
:password "pwrd"})
(defn get-recent-gic-rows
[search-date lt-toggle]
(let [query (if (= 0 lt-toggle)
(str "select g.* from gic_employees g where g.processed_date <= '" search-date "' order by g.processed_date desc limit 1 ")
(str "select g.* from gic_employees g where g.processed_date < '" search-date "' order by g.processed_date desc limit 1 "))]
(j/query db
[query])))
Run Code Online (Sandbox Code Playgroud)
M后缀表示数字是BigDecimal.你可以在REPL中查看
user=> (class 1)
java.lang.Long
user=> (class 1.0)
java.lang.Double
user=> (class 1M)
java.math.BigDecimal
Run Code Online (Sandbox Code Playgroud)
由于您的数据库列类型是decimal(5,2)和decimal(7,2),因此将数字转换为float或者double因为这些浮点类型无法表示所有数字decimal(5,2)或decimal(7,2)准确的数字是不安全的.
您可以使用关键字"浮点不准确"进行谷歌搜索.Stackoverflow中还有大量的文章和问答.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |