Как исправить ошибку на
У меня есть запрос 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 ответа
Решение
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'
условие всегда оценивается как ИСТИНА. это не нужно.
Также, если вы используете mysql
функция должна быть substring
вместо substr
, Также не должно быть кавычек вокруг имени функции. Вы не можете сравнить 0
со всеми столбцами в таблице. Использовать count(*)
вместо.
Вы также можете попробовать
DELETE FROM BC_UDV3_ROLES
WHERE PERMISSION_ID = 'x'
OR SUBSTRING(PERMISSION_ID, 1, 1)='D'
Я полагаю, вы используете 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'