Clojure 如何将HugSQL参数扩展为多个like语句

Clojure 如何将HugSQL参数扩展为多个like语句,clojure,hugsql,Clojure,Hugsql,有人知道如何做到这一点吗 (获取列表[“免费”食物])-> Select name From Lists Where name like '%free%' and name like '%food%' 我试过: -- :name get-lists :? :* Select id, name from Lists where --~ (clojure.string/join "" (interpose " AND " (map #(str "name LIKE '%" % "%'") :sK

有人知道如何做到这一点吗

(获取列表[“免费”食物])
->

Select name 
From Lists
Where name like '%free%' and name like '%food%'
我试过:

-- :name get-lists :? :*
Select id, name
from Lists
where
--~ (clojure.string/join "" (interpose " AND " (map #(str "name LIKE '%" % "%'") :sKeyWords)))

但这当然行不通。有人能给我指一下正确的方向吗?

找到了答案。为其他可能需要的人放在这里

-- :name get-lists :? :*
Select id, name
from Lists
--~ (str "WHERE " 
        (clojure.string/join " AND " (map #(str "name LIKE '%" % "%'") 
          (:key-words params))))

要形成查询,还可以使用clojure的标准库,该库功能强大且简洁:

user> (require '[clojure.pprint :refer [cl-format]])

user> (cl-format nil "WHERE~{ name LIKE '%~a%' ~^AND~}" 
                 ["me" "you" "somebody"])
;;=> "WHERE name LIKE '%me%' AND name LIKE '%you%' AND name LIKE '%somebody%' "

(clojure.string/join”“(interpose”和“[1 2 3]))
是功能强大的
(clojure.string/join”和“[1 2 3])
!而且非常简洁。不过,如果不学习这门语言,就有点神秘:)