您可以使用 REGEX 解决问题,例如:
REGEXP_LIKE('Hello world', 'Hello', 'mars') = 1因此,您可以替换查询:
select ... where c.clientId = ? and c.vehicleReg1 like ? or c.vehicleReg2 like ?
通过在这里使用此查询:
SELECT ... WHERe c.clientId = ? and REGEXP_LIKE(?, c.vehicleReg1, c.vehicleReg2) = 1-- -------------------------------------^^
这意味着如果您的值
?是like
c.vehicleReg1或
c.vehicleReg2返回
1,则匹配错误
注意
@ mm759,由于程序的编码和结构方式…它仅传递2个参数(一个用于clientId,一个用于多个vehicleReg列)
您可以在查询的多个位置使用相同的参数,如下所示:
q = getEntityManager().createNamedQuery("select ... where c.clientId = :par1 and c.vehicleReg1 like :par2 or c.vehicleReg2 like :par2");//-------------------------------^^----------------------------^^--------------------------^^q.setParamettre("par1", "value1");q.setParamettre("par2", "value2");


