我使用JPQL从我的PostgresSQL数据库中获取数据,我的查询比较两个字符变化,(我使用StringBuilder创建查询)它看起来像这样
StringBuilder
queryStringBuilder.append(" AND o.num >= CONCAT(SUBSTRING(o.num,1,LENGTH(o.num) - LENGTH(:numStart)),:numStart)")
条件:解决方案1
queryStringBuilder.append(" AND SUBSTRING(o.num , LENGTH(o.num) - 1 , LENGTH(:numStart) ) >= :numStart ")
并返回此错误
引起:异常[EclipseLink-4002](Eclipse Persistence Services - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException 内部异常:org.postgresql.util.PSQLException:
ERREUR:l'argument de ANDdoitêtredetypebooléen,et non du type text 位置:460 错误代码:0
经过艰苦的工作和尝试其他查询后,我已经完成了这个解决方案
条件:解决方案2
o.num = 123456789
并且第二个查询工作正常。
第一个查询示例
numStart = 98
和123456789
它会将123456798
与o.num = 123456789
进行比较(在这种情况下,它会返回False)
第二个查询示例
numStart = 98
和89
它会将98
与{{1}}进行比较(在这种情况下,它也会返回False)
我的问题是:这两个查询之间有什么区别,以及如何使第一个查询起作用。