mysql - 如何编写带有嵌入式双引号的 Clojure 查询

标签 mysql string jdbc clojure

我想编写一个 Clojure 查询,以便将 where 子句中的 lnamfnam 参数用双引号引起来。我需要将它们用双引号引起来,因为嵌入的名称包含单引号字符,例如“O'BRIEN”。

我一直在查看 Clojure 查询和在字符串中嵌入双引号的示例,但没有找到我想要的示例。

这在 lein repl 中运行良好

gic-cmp.core=> (def lnam "O'BRIEN")
#'gic-cmp.core/lnam
gic-cmp.core=> (str """"lnam"""")
"O'BRIEN"

但这不会在下面的查询中产生带引号的字符串。

(defn match-this-rec-with-last
    ""
    [gic-id lnam fnam search-date]
    (let [query (str (str "select g.* from gic_employees g where g.processed_date = '" search-date "' ")
                          (str "and g.gic_id = '" gic-id "' and g.last_name = ")
                          """"lnam""""
                          (str " and g.first_name = ")
                          (str """"fnam"""")
                          (str " order by g.processed_date desc "))]
      (println query)
      (j/query db
            [query])))

最佳答案

REPL 显示带有引号的 str 函数的返回值。

(str """"lnam"""")

这将返回 2 个空字符串 lnam 和另外 2 个空字符串,所有字符串都用引号引起来。

底层字符串是 java.lang.String,在字符串中包含双引号的标准 Java 方法是使用反斜杠将其转义。

user=> (str "test with \"quoted\" value")
"test with \"quoted\" value"
user=> (println (str "test with \"quoted\" value"))
test with "quoted" value

关于mysql - 如何编写带有嵌入式双引号的 Clojure 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25383771/

相关文章:

php - 使用 PDO - Php 登录

mysql - 将 MySQL 表从一个数据库复制到表结构不同的另一个数据库

string - 在流中找到单词?

c++ - 初学者 C++ 问题

c - 在 C 中查找子字符串在字符串中的位置

java - java.sql 中的日期时间等价物? (有 java.sql.datetime 吗?)

java - 在java中获取数据库连接

php - MySQL 加入,即使没有匹配... Laravel

java - 将文件 DSN 与 JDBC 一起使用

java - SQL 根据条件将变量字符串附加到 WHERE 子句