【发布时间】:2013-04-30 04:25:51
【问题描述】:
我有这样的查询
Query query = session.createQuery("select object from EntityObject object where lower(object.columnName) like lower (E'%\\(test\\)%')");
和
Query query = session.createQuery("select object from EntityObject object where fts('english',contact.searchColumn,'testing (test)') = true;
我正在尝试使用反斜杠转义搜索文本中的特殊字符,并且我正在使用 postgres 8.3 和 standard_conforming_strings 处于开启状态。通过使用“E”,我收到错误
意外的标记:第一种情况的第 1 行附近的 '%\(test\)%'
并在下一个案例中低于错误
错误:tsquery 中的语法错误:“测试(测试)”
请帮我解决这个问题。我的意图是转义特殊字符,尤其是带反斜杠的括号“()”。
【问题讨论】:
-
为什么你的like子句在单引号外面有一个“E”?
-
我尝试转义此处指定的特殊字符postgresql.org/docs/current/interactive/…“如果应用程序希望将反斜杠视为转义字符,则应使用转义字符串语法。”
-
您尝试过使用限制吗?
-
不,我没有尝试使用限制我想在这种方法中这样做。
-
我认为你需要在你的 postgresql 数据库中设置 standard_conforming_strings=on。但我怀疑你可以通过编程方式做到这一点
标签: java hibernate postgresql