簡體   English   中英

如何將 HugSQL 參數擴展為多個類似語句

[英]How to expand HugSQL parameter into multiple like statements

有誰知道如何做到這一點?

(get-lists ["free" "food"]) ->

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 標准庫中的clojure.pprint/cl-format ,它非常強大且簡潔:

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%' "

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM