【发布时间】:2015-08-23 07:10:54
【问题描述】:
我想编写一个以名字作为输入参数并返回所有匹配记录的查询。匹配应该不区分大小写。作为一个例子,我想提取所有名为 Douglass 的人。参数化,但区分大小写:
(d/q '[:find (pull ?e [*])
:in $ ?par
:where
[?e :person/firstname ?par]
] db "Douglass")
无论大小写如何,以下查询都将产生所有匹配项,但未参数化(尚未使用 ?par,而是参数化查询的占位符):
(d/q '[:find (pull ?e [*])
:in $ ?par
:where
[?e :person/firstname ?bfn]
[(re-find (re-pattern "(?i)DouGLASS") ?bfn)]
] db "")
但我无法将它们结合起来。 A - 可能是幼稚的 - 方法是抛出Unable to resolve symbol: ?par in this context:
(d/q '[:find (pull ?e [*])
:in $ ?par
:where
[?e :person/firstname ?bfn]
[ (re-find (re-pattern (str "(?i)" ?par)) ?bfn)]
] db "Douglass")
那么:如何为这种情况传递名字?
【问题讨论】: