【发布时间】:2013-09-04 13:18:14
【问题描述】:
我的查询条件部分如下:
...
where foo.bar like '%:%'
查询将执行但没有结果。我认为这是因为冒号,因为它是 HQL 中的保留字符。那么如何在不将 : 作为参数发送到我的查询的情况下转义它。
我已经使用了 '%\:%' 和 '%\\:%' 没有成功。
【问题讨论】:
-
试试这个 [:] peraphs 取决于 DBMS
-
您确定您的表中有一个包含
:的foo.bar吗?我希望这个查询能够很好地执行,而且看起来确实如此。如果这个字符有问题,它可能会抛出异常而不是运行。打开 SQL 日志并查看正在执行的 SQL 查询。 -
bar 实际上是电子邮件的主题。假设主题是“FWD:test”,如果我将 'FWD' 或 'test' 放在 %s 之间,我将得到结果,但使用冒号将没有输出。
-
我找到了解决办法:q=q.replaceAll(":","'||unistr('\\\\003A')||'");
标签: hibernate escaping char hql colon