gpt4 book ai didi

Clojure contrib sql 使所有数字成为 BigDecimal

转载 作者:行者123 更新时间:2023-12-04 06:46:25 24 4
gpt4 key购买 nike

clojure.contrib.sql 库为所有数字字段返回 BigDecimals。将某些字段作为整数的好方法是什么?示例代码如下:

(sql/with-connection my-db 
(sql/with-query-results res
[sql-str 6722]
(into [] res)))

在生成的记录集合中,所有数字都是 BigDecimal。其中一些是外键,出于我自己的原因,我需要它们是整数。

我知道我可以遍历集合并转换它们,但我宁愿不这样做,因为它是一个非常大的集合,如果数字适合整数,让库使用 ResultsSet.getInteger 似乎是正确的。

DB 为 Oracle,整型 DB 字段定义为 NUMBER(10)

谢谢

最佳答案

正如 atreyu 所指出的,10 位整数不一定适合 Integer .

更重要的是,你得到的 seq 是由 clojure.core/resultset-seq 创建的,反过来又调用 ResultSet.getObject(int) .根据 JDBC 规范,BigDecimals正在返回,因为这是对应于列的 SQL 类型的 java 类型。

此外,您无需担心“迭代[ing] 集合”。结果集序列是懒惰的,而 map是懒惰的,所以你最终会在使用它们之前转换每个数字。例如。,

(sql/with-connection my-db
(sql/with-query-results res
[sql-str 6722]
(做东西
(map (comp int :id) res))))

关于Clojure contrib sql 使所有数字成为 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com