【问题标题】:Slick plain SQL escape PostgreSQL json function光滑的普通 SQL 转义 PostgreSQL json 函数
【发布时间】:2019-04-28 22:57:18
【问题描述】:

我试图在此查询中转义 ?| 运算符:

val data = sql"""
  SELECT ......
  FROM .......
  WHERE table.column ?| array['23', '12']
""".as[Int].head

db.run(data)

但是?| 运算符在查询中被翻译为$1|(在数据库查询日志中检查),它显然会产生错误

ERROR:  syntax error at or near "$1" at character 735

我试过#?|$?| 没有成功

【问题讨论】:

    标签: scala slick


    【解决方案1】:

    ? 是 JDBC 中参数的占位符(即 Slick 之后的级别)。您可以将? specifically for PostgreSQL 转义为??|SO 14779896 - Does the JDBC spec prevent '?' from being used as an operator 对此进行了有用的讨论。

    此约定的替代方案是使用非符号替代方案:jsonb_exists_any。例如,

    WHERE jsonb_exists_any(table.column, array['23', '12'])
    

    【讨论】:

    • 非常抱歉,我做了很多更改,所以我复制了最后一次尝试而不是原来的尝试,我已经更新了问题
    • 发现需要使用?? 不是 ??|
    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2013-03-05
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多