0

我有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'

当我执行它得到这个错误

请帮忙,我该如何解决?

4

2 回答 2

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与表中的所有列进行比较。改用 a count(*)

或者你也可以试试

DELETE FROM BC_UDV3_ROLES
WHERE PERMISSION_ID = 'x'
OR SUBSTRING(PERMISSION_ID, 1, 1)='D'
于 2015-08-19T15:13:09.547 回答
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'
于 2015-08-19T15:03:15.747 回答