如何在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-