rules repository

G-1080

🆓
Error

Avoid using the same expression on both sides of a relational comparison operator or a logical operator.

Reason

Using the same value on either side of a binary operator is almost always a mistake. In the case of logical operators, it is either a copy/paste error and therefore a bug, or it is simply wasted code and should be simplified.

This rule ignores operators +, * and ||, and expressions: 1=1, 1<>1, 1!=1, 1~=1 and 1^=1.

Example

Non-Compliant Example

declare
   co_max_salary constant emp.salary%type := 3000;
begin
   select emp.first_name
         ,emp.last_name
         ,emp.salary
         ,emp.hire_date
     from employees emp
    where emp.salary > co_max_salary
       or emp.salary > co_max_salary
    order by emp.last_name,emp.first_name;
end;
/
Issues
LineColumnMessage
911Expression 'emp.salary > co_max_salary' used on both sides of the condition.

Compliant Solution - ★★★★★

declare
   co_max_salary constant emp.salary%type := 3000;
begin
   select emp.first_name
         ,emp.last_name
         ,emp.salary
         ,emp.hire_date
     from employees emp
    where emp.salary > co_max_salary
    order by emp.last_name,emp.first_name;
end;
/

References