SA0167 : Non-ISO standard comparison operator found |
![]() |
Using non-ISO standard comparison operators in SQL queries can lead to issues with cross-platform compatibility and future-proofing your code.

When writing T-SQL code in SQL Server, it’s important to adhere to ISO standard comparison operators to ensure your queries run smoothly across different RDBMS platforms and future SQL Server versions.
For example:
1-- Non-ISO standard operator example 2SELECT * FROM TableName WHERE Column != 'Value';
This example uses !=, a non-standard operator. In contrast, using <> is the ISO standard for not equal comparisons.
-
Non-ISO operators might not be recognized in other SQL databases, leading to compatibility issues.
-
Using non-standard operators may result in unexpected behavior or errors in future versions of SQL Server.

To ensure cross-platform compatibility and future-proofing of your T-SQL code, replace non-ISO standard comparison operators with ISO standard operators in SQL queries.
Follow these steps to address the issue:
-
Identify any non-ISO standard operators in your SQL query. Common non-ISO operators include != for not equal, !< for greater than or equal to, and !> for less than or equal to.
-
Replace != with <>, which is the ISO standard operator for not equal comparisons.
-
Replace !< with >=, which is the ISO standard operator for greater than or equal comparisons.
-
Replace !> with <=, which is the ISO standard operator for less than or equal comparisons.
For example:
1-- Example of corrected query using ISO standard operators 2SELECT * FROM TableName WHERE Column <> 'Value';

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

Rule has no parameters.

The rule does not need Analysis Context or SQL Connection.


Design Rules, Code Smells

There is no additional info for this rule.

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 |

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 |

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 |
