如何在clojure中迭代结果集并提取一个特定值?
下面是我尝试遍历结果集并获取其值的过程如何在clojure中迭代结果集并提取一个特定值?,clojure,Clojure,下面是我尝试遍历结果集并获取其值的过程 (sql/with-connection db (sql/with-query-results rs ["select * from user where UserID=?" 10000] (doseq [rec rs s rec] (println (val s)) ))) 但是你如何从中提取一个特定的价值;我只需要用户名字段 任何人都可以演示如何执行此操作吗?结果集是一系列映射,因此如果您想获得一个字段(例如,一
(sql/with-connection db
(sql/with-query-results rs ["select * from user where UserID=?" 10000]
(doseq [rec rs
s rec]
(println (val s))
)))
但是你如何从中提取一个特定的价值;我只需要用户名字段
任何人都可以演示如何执行此操作吗?结果集是一系列映射,因此如果您想获得一个字段(例如,一个名为
name
)的字段,则:
但是正如在评论中提到的,如果您只想要名称,那么
从
中选择名称将是更有效的选项。当您需要其他内容的整行时,上面的代码非常有用。结果集是一系列映射,因此,如果您希望获得一个字段(例如,一个名为name
)的字段,则:
但是正如在评论中提到的,如果您只想要名称,那么
从
中选择名称将是更有效的选项。上面的代码在您需要整行用于其他内容时非常有用。带有连接的
/带有查询结果的语法从clojure.java.jdbc 3.0开始。使用新的查询
语法和附加的:row fn
和:result set fn
参数,可以更轻松地过滤结果
(query db ["select * from user"]
:row-fn :name
:result-set-fn #(doall (take 1000 (drop 10000 %))))
请确保结果集fn实现所有值,它不应返回惰性序列(因此本例中的doall
。带有连接的带有查询结果的/语法与clojure.java.jdbc 3.0相同。使用新的查询
语法和附加的:row fn
和:result set fn
参数,可以更轻松地过滤结果
(query db ["select * from user"]
:row-fn :name
:result-set-fn #(doall (take 1000 (drop 10000 %))))
确保结果集fn实现所有值,它不应该返回延迟序列(因此本例中的doall
)好的,您可以更改查询以仅返回请求的信息:“selectname from user where UserID=?”10000
我希望所有值也显示出来。并提取一个特定字段以执行其他功能。您使用的是什么SQL库?@Thumbnail看起来像clojure.java.jdbc-您可以更改查询以仅返回请求的信息:“select name from user where UserID=?”10000
我希望也显示所有值。并提取一个特定字段以执行其他函数。您使用的是什么SQL库?@Thumbnail看起来像clojure.java.jdbc-