заменить пробелы в строке запятыми - PullRequest
3 голосов
/ 07 октября 2011

Мне нужно найти все уникальные значения из приведенного ниже и передать их в SQL-запрос.Ниже приведен пример того, что я пытаюсь сделать, я на самом деле беру данные из двух файлов, сопоставляя их и получая уникальные значения.

Моя проблема заключается в том, что я хочу поместить значения в sql IN(), но у меня возникли проблемы с разделением значений через запятую

Я пытался использовать замену, но мне кажется, что это не работает

(def snapshot 
                #{{:id "1234" :mtm "101" :pv"200"}
                {:id"1235" :mtm "101" :pv"200"}
                {:id"10234" :mtm "101" :pv"200"}
                {:id"12034" :mtm "101" :pv"200"}
                {:id"127" :mtm "101" :pv"200"}}
)
 (def snapshot1 
                #{{:id"1238" :mtm "104" :pv"200"}
                {:id"234" :mtm "101" :pv"200"}
                {:id"124" :mtm "101" :pv"200"}
                {:id"123" :mtm "101" :pv"200"}
                {:id"134" :mtm "101" :pv"200"}}
)
(def SNAPSHOT-IDsT (set (map :id snapshot)))

(def SNAPSHOT-IDsT1 (set (map :id snapshot1)))

(def id-in-one-file-only (difference SNAPSHOT-IDsT1 SNAPSHOT-IDsT))

(println id-in-one-file-only)

это дает мне {1238 123 134 234 124}

Как я могу отредактировать эти результаты, чтобы дать мне {1238, 123, 134, 234, 124}

Так, чтобы я мог затем передать его в строку

(str "Select * from table where id in ("id-in-one-file-only")")

Любая помощь или указатели с этим будет очень признателен

Ответы [ 2 ]

1 голос
/ 07 октября 2011

difference возвращает набор, поэтому я предполагаю, что в результате вы получите #{1238 123 134 234 124}.Как насчет формата FN:

user=> (defn format-ids [s]
         (str "{"
              (reduce #(str %1 ", " %2) s)
              "}"))

user=> (format-ids #{1238 123 134 234 124})
"{134, 234, 1238, 123, 124}"
0 голосов
/ 07 октября 2011

interpose прекрасно работает для такого рода вещей: <del>user=> (apply str (interpose \, #{1238 123 134 234 124})) "134,234,1238,123,124"</del>

Редактировать: amalloy совершенно прав, clojure.string/join - намного более эффективная реализация .

То, что я сделал выше, это то, что было в clojure.contrib v1.0 str-join (я подозреваю, что моя память играла со мной шутки, и именно здесь я увидел, что вставка использовалась в первую очередь) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...