如何修复错误

时间:2015-08-19 14:57:37

标签: java mysql sql jdbc opensql

我有sql请求

DELETE FROM BC_UDV3_ROLES 
WHERE PERMISSION_ID = 'x' OR
      0 < (SELECT * FROM BC_UDV3_ROLES 
           WHERE "SUBSTR"(PERMISSION_ID, 0, 1)='D')  OR '1'='1'

当我执行它时会出现此错误

请帮忙,我该如何解决?

2 个答案:

答案 0 :(得分:1)

DELETE FROM BC_UDV3_ROLES
WHERE PERMISSION_ID = 'x'
OR 0 < (SELECT count(*) FROM BC_UDV3_ROLES WHERE SUBSTRING(PERMISSION_ID, 1, 1)='D')

OR '1'='1'条件始终计算为TRUE。它不是必需的。

此外,如果您使用mysql,则该功能应为substring而非substr。此外,函数名称周围不应有引号。 您无法将0与表格中的所有列进行比较。请改用count(*)

或者你也可以尝试

DELETE FROM BC_UDV3_ROLES
WHERE PERMISSION_ID = 'x'
OR SUBSTRING(PERMISSION_ID, 1, 1)='D'

答案 1 :(得分:0)

我猜你是以错误的方式使用SUBSTR。试试这个:

DELETE FROM BC_UDV3_ROLES WHERE PERMISSION_ID = 'x' OR
0<(SELECT * FROM BC_UDV3_ROLES WHERE SUBSTR(PERMISSION_ID, 0,
1)='D')  OR '1'='1'