Как расширить параметр Hug SQL на несколько похожих операторов - PullRequest
1 голос
/ 21 апреля 2020

Кто-нибудь знает, как это можно сделать?

(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)))

Но, конечно, это делает не работа. Может кто-нибудь указать мне правильное направление, пожалуйста?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Для формирования запроса вы также можете использовать clojure.pprint / cl-format из стандартной библиотеки 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%' "
1 голос
/ 21 апреля 2020

разобрался с ответом. Выкладываю сюда для всех, кому это может понадобиться.

-- :name get-lists :? :*
Select id, name
from Lists
--~ (str "WHERE " 
        (clojure.string/join " AND " (map #(str "name LIKE '%" % "%'") 
          (:key-words params))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...