SA0140 : Reserved keyword is not in the required case

Inconsistent casing of reserved keywords in T-SQL can reduce code readability and maintainability.

Description

In T-SQL code, using consistent casing for reserved keywords enhances code readability and aligns with best practices for writing clear and maintainable SQL scripts.

For example:

SQL
1-- Example of inconsistent casing
2Select * from Employees where employee_id = 1;

In the example above, the variations in keyword casing can make the SQL code harder to read and may lead to confusion during maintenance or code reviews. Following a consistent casing style can help in standardizing codebases, especially in collaborative environments.

  • Inconsistent casing may lead to misunderstandings among team members about coding standards.

  • It can contribute to difficulties in maintaining or refactoring code over time.

  • Standardizing keyword casing improves the overall readability of SQL scripts, facilitating better communication among developers.

How to fix

Ensure that reserved keywords in your T-SQL code are consistently cased to improve readability and maintainability.

Follow these steps to address the issue:

  1. Review your T-SQL code to identify any reserved keywords with inconsistent casing. Reserved keywords include terms like SELECT, FROM, and WHERE.

  2. Determine the casing convention you want to apply, such as all uppercase or all lowercase, to maintain consistency across your codebase.

  3. Update the reserved keywords in your script to conform to the chosen casing style. You can manually change the keyword case or use a tool or script to automate the process.

For example:

SQL
1-- Example of corrected query with consistent casing
2SELECT * FROM Employees WHERE employee_id = 1;

Scope

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

Parameters
Name Description Default Value
RequiredCase

The parameter specifies the required case of the reserved keywords.

UPPERCASE

Remarks

The rule does not need Analysis Context or SQL Connection.

Effort To Fix
2 minutes per issue.
Categories

Naming Rules

Additional Information

There is no additional info for this rule.

Example Test SQL
SQL
 1CREATE TABLE Test.Greeting
 2(
 3GreetingId INT identity (1,1) PRIMARY KEY,
 4Message nvarchar(255) NOT NULL,
 5)
 6
 7INSERT INTO Test.Greeting (Message) 
 8SELECT 'Hello!'
 9UNION ALL 
10SELECT 'Hi!'
11UNION ALL
12SELECT 'Hello, world!'
13
14insert into Test.Greeting (Message) 
15values ('How do yo do?'),
16        ('Good morning!'),
17        ('Good night!')
18
19DELETE  Test.Greeting wherE GreetingId = 3
20
21SELECT * FROM Test.Greeting g 
22where 
23g.Message like 'Hello%'
24
25drop TABLE Test.Greeting

Example Test SQL with Automatic Fix
SQL
 1CREATE TABLE Test.Greeting
 2(
 3GreetingId INT IDENTITY (1,1) PRIMARY KEY,
 4Message nvarchar(255) NOT NULL,
 5)
 6
 7INSERT INTO Test.Greeting (Message) 
 8SELECT 'Hello!'
 9UNION ALL 
10SELECT 'Hi!'
11UNION ALL
12SELECT 'Hello, world!'
13
14INSERT INTO Test.Greeting (Message) 
15VALUES ('How do yo do?'),
16        ('Good morning!'),
17        ('Good night!')
18
19DELETE  Test.Greeting WHERE GreetingId = 3
20
21SELECT * FROM Test.Greeting g 
22WHERE 
23g.Message LIKE 'Hello%'
24
25DROP TABLE Test.Greeting

Analysis Results
  Message Line Column
1 SA0140 : Reserved keyword is not in the required case. 3 15
2 SA0140 : Reserved keyword is not in the required case. 14 0
3 SA0140 : Reserved keyword is not in the required case. 14 7
4 SA0140 : Reserved keyword is not in the required case. 15 0
5 SA0140 : Reserved keyword is not in the required case. 19 22
6 SA0140 : Reserved keyword is not in the required case. 22 0
7 SA0140 : Reserved keyword is not in the required case. 23 10
8 SA0140 : Reserved keyword is not in the required case. 25 0
See Also

Other Resources