提问人:newbie 提问时间:11/16/2023 最后编辑:newbie 更新时间:11/16/2023 访问量:54
如何使用 Clojure 将 PostgreSQL 函数应用于查询?
How do I apply a PostgreSQL function to a query using Clojure?
问:
(ns training-clj.querys
(:require [honey.sql :as honey]
[next.jdbc.sql :as jdbc]))
(defn get-by-username
[db username]
(let [query (honey/format {:select [:*]
:from [:user]
:where [:= :username username]]})]
(jdbc/query db query)))
我正在每个用户的数据库(postgresql)中进行查询,并且我有一个类似于以下内容的返回: 鉴于我定义的这个代码库,我想将 PostgreSQL LOWER() 函数应用于 :username 键,我有什么方法可以做到这一点?({:id 2 :username "random" :age 18 :telephone 3120-4587})
答:
2赞
Eugene Pakhomov
11/16/2023
#1
您使用的是 HoneySQL,因此应通过 HoneySQL 的 DSL 调用 PostgreSQL 函数。此处介绍了相关部分。
至于您的具体问题,目前尚不清楚该函数必须应用于什么,因为返回所有列。lower
:*
但是,假设您要返回 ,只是小写。然后是这样的::first-name
{:select [[[:lower :first-name]]]
...}
或
{:select :%lower.first-name
...}
评论
1赞
newbie
11/16/2023
完美,它奏效了,很抱歉无法清楚地解释它,我是这方面的初学者,但你能告诉我如何将低键应用于查询键吗?
1赞
Eugene Pakhomov
11/17/2023
@django “查询键”是什么意思?如果您指的是在原始查询中筛选的用户名,则它是 .{... :where [:= :%lower.username username]}
评论