代码之家  ›  专栏  ›  技术社区  ›  alex88

光滑的普通SQL escape PostgreSQL json函数

  •  0
  • alex88  · 技术社区  · 6 年前

    我想逃离 ?|

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

    然而 ?| 运算符转换为 $1| 在查询中(在DB查询日志中检查),它显然会生成错误

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

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

    1 回复  |  直到 5 年前
        1
  •  1
  •   Richard Dallaway    6 年前

    ? 是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'])