SA0167 : Non-ISO standard comparison operator found

The topic describes the SA0167 analysis rule.

Message

Non-ISO standard comparison operator found

Description

It is advisable to use ISO standard comparison operators instead of non-ISO standard operators to help ensure optimal cross-platform and future version compatibility.

While it is currently acceptable to use such non-ISO operators, you should consider that statements that you create might not be supported on other ISO-compliant database management systems.

Also, non-ISO standard comparison operators may not be supported on future versions of SQL Server.

How to fix

Replace the Non-ISO comparison operators with ISO standard operators.

* Not equal to: Use <> instead of !=

* Greater than or equal to: Use >= instead of !<

* Less than or equal to: Use <= instead of !>

Scope

The rule has a Batch scope and is applied only on the SQL script.

Parameters

Rule has no parameters.

Remarks

The rule does not need Analysis Context or SQL Connection.

Effort To Fix
2 minutes per issue.
Categories

Design Rules, Code Smells

Additional Information

There is no additional info for this rule.

Example Test SQL
SQL
 1-- Test Case 1: The violation should be reported
 2SELECT Column1 FROM Table1 WHERE Column1 != 1
 3-- Test Case 2: The violation should be reported
 4SELECT Column1 FROM Table1 WHERE Column1 !< 1
 5-- Test Case 3: The violation should be reported
 6SELECT Column1 FROM Table1 WHERE Column1 !> 1
 7
 8-- Test Case 4: A violation should not be reported
 9SELECT Column1 FROM Table1 WHERE Column1 <> 1
10-- Test Case 5: A violation should not be reported
11SELECT Column1 FROM Table1 WHERE Column1 >= 1
12-- Test Case 6: A violation should no be reported
13SELECT Column1 FROM Table1 WHERE Column1 <= 1

Example Test SQL with Automatic Fix
SQL
 1-- Test Case 1: The violation should be reported
 2SELECT Column1 FROM Table1 WHERE Column1 <> 1
 3-- Test Case 2: The violation should be reported
 4SELECT Column1 FROM Table1 WHERE Column1 >= 1
 5-- Test Case 3: The violation should be reported
 6SELECT Column1 FROM Table1 WHERE Column1 <= 1
 7
 8-- Test Case 4: A violation should not be reported
 9SELECT Column1 FROM Table1 WHERE Column1 <> 1
10-- Test Case 5: A violation should not be reported
11SELECT Column1 FROM Table1 WHERE Column1 >= 1
12-- Test Case 6: A violation should no be reported
13SELECT Column1 FROM Table1 WHERE Column1 <= 1

Analysis Results
  Message Line Column
1 SA0167 : Non-ISO standard comparison operator found: != 2 41
2 SA0167 : Non-ISO standard comparison operator found: !< 4 41
3 SA0167 : Non-ISO standard comparison operator found: !> 6 41
See Also

Other Resources