Как исправить ошибку на

У меня есть запрос 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'
Другие вопросы по тегам