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])
!而且非常简洁。不过,如果不学习这门语言,就有点神秘:)