我有一个疑问
SELECT CAST(p.propertyId AS long) FROM Property p
WHERE p.propertyId IS NOT NULL
AND p.propertyId NOT LIKE '%-%'
AND p.propertyId NOT LIKE '%+%'
效果非常好,因为 WHERE 条件成功过滤掉了 propertyId 的所有非数字值。但如果我尝试使用强制转换作为条件
SELECT p FROM Property p
WHERE p.propertyId IS NOT NULL
AND p.propertyId NOT LIKE '%-%'
AND p.propertyId NOT LIKE '%+%'
AND CAST(p.propertyId AS long) BETWEEN 999999 AND 10000000
它失败并出现错误java.sql.SQLException:ORA-01722:无效数字
。
有没有办法强制最后一个条件只检查前三遍?
最佳答案
如果您的第一个请求过滤掉您可以从其结果中选择的所有非数字值:
SELECT p FROM
(
SELECT p1 FROM Property p1
WHERE p1.propertyId IS NOT NULL
AND p1.propertyId NOT LIKE '%-%'
AND p1.propertyId NOT LIKE '%+%'
)
where CAST(p.propertyId AS long) BETWEEN 999999 AND 10000000
关于java - 有没有办法对我的 JPQL 查询尝试的 WHERE 条件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814660/