db2 SQLSyntaxErrorException使用LTRIM修剪查询中的字符'x'

bprjcwpo  于 2022-11-23  发布在  DB2
关注(0)|答案(1)|浏览(131)

我使用TRIM函数来修剪查询中的一些字符,我使用Hibernate来执行以下查询。

from ABean s where s.cId in (select ca.id from CBean ca where LTRIM(ca.refNumber,'0') = LTRIM('$ref$','0') and ca.valid = 0)

$ref$在查询中被替换为实际值。

当我运行DB2和Mockito测试(使用内存中的DB)时,我看到了不同的行为。在DB2中,这个查询工作正常,但在内存中的Mockito DB中,我得到了java.sql.SQLSyntaxErrorException,错误如下。

Syntax error: Encountered "," at line 1, column {column_number_in_actual_query}.

我不能使它与内存中的数据库工作,有什么错误我正在做什么?谢谢.

svmlkihl

svmlkihl1#

在IBM DB2中,在SYSIMB模式中,LTRIM采用了第二个参数,即要修剪的字符,就像您使用的(see here)一样。但是,在SYSFUN模式(以及大多数其他SQL实现)中,它只采用了一个参数,并假定您正在修剪空格(see here)。
根据这个错误,解释器似乎不需要逗号,所以它可能试图使用函数的更标准版本,当它看到第二个参数时失败了。
基于documentation for function references,您应该能够用SYSIBM替换LTRIM。LTRIM

相关问题