我需要使用LIKE
和反斜杠来搜索一些名称。问题是Postgres在LIKE
子句中将反斜杠理解为转义字符。我尝试打开standard_conforming_strings
但是它没有帮助。
SELECT h.software_id
,h.software_name
FROM software h
WHERE software_name LIKE '%\%';
这个查询没有显示任何内容,但我有一个软件名称'\'。
我听说过有人提到了预处理语句
。我使用Hibernate来执行上述查询。
<persistence-unit name="policyPersistence" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/MyApp</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
</properties>
</persistence-unit>
JPA
query.setParameter(1, "%" + searchCriteria.getSoftwareName() + "%");
但是Postgres不能正确地转义反斜线。如何解决?