Duplicate table aliasesSQL-L020Unused table aliasSQL-L025Undefined reference detectedSQL-L026Unqualified referencesSQL-L027Keyword used as an identifierSQL-L029Inconsistent capitalization detectedSQL-L014Inconsistent capitalisation of keywordsSQL-L010Implicit aliasing of table detectedSQL-L011Implicit aliasing of column detectedSQL-L012Column expression without alias detectedSQL-L013`DISTINCT` with parenthesisSQL-L015Ambiguous use of `DISTINCT`SQL-L021Trailing commas within `SELECT` clauseSQL-L038Unnecessary whitespace foundSQL-L039Inconsistent referencesSQL-L028Unnecessary trailing whitespaceSQL-L001Mixed Tabs and Spaces in single whitespaceSQL-L002Expected a single whitespace after `AS`SQL-L023Expected a single whitespace after `USING`SQL-L024Files must end with a trailing newlineSQL-L009Line too longSQL-L016Inconsistent function namesSQL-L030Indentation not consistent with previous linesSQL-L003Operators placed before the newlineSQL-L007Missing whitespace after a commaSQL-L008Function name not immediately followed by bracketSQL-L017Misaligned closing bracketSQL-L018Mixed comma style foundSQL-L019Missing blank lineSQL-L022Mixed Tab and Space indentationSQL-L004Multiple whitespaces around an operatorsSQL-L006Commas has whitespace directly before themSQL-L005Inconsistent capitalisation of boolean or null literalSQL-L040Misaligned `SELECT` modifierSQL-L041Table aliasing in `FROM` and `JOIN` operatorsSQL-L031Confusing use of `USING` operatorSQL-L032File start with '
' or other whitespaceSQL-L050Unqualified use of `JOIN` clauseSQL-L051Subquery found in `JOIN`SQL-L042Unidiomatic `NULL` checksSQL-L049Unflattened `CASE` statements in `ELSE` clauseSQL-L058Multiple `SELECT` targets on same lineSQL-L036Ambiguous ordering directions for columns in `ORDER BY` clauseSQL-L037Unidiomatic use of `UNION` operatorSQL-L033Unidiomatic `SELECT` operand arrangementSQL-L034Redundant `ELSE NULL`SQL-L035Unnecessary `CASE` statementSQL-L043Unknown number of resulting columnsSQL-L044Unused Common Table Expression in querySQL-L045Use of non-ANSI spec syntax for `COUNT` all rowsSQL-L047Inconsistent styling around string literalsSQL-L048Improperly placed semi-colon(`;`) at statement endSQL-L052Use of brackets wrapping top-level codeSQL-L053Inconsistent column references in `GROUP BY`/`ORDER BY`SQL-L054Use `LEFT JOIN` instead of `RIGHT JOIN`SQL-L055
Unnecessary `CASE` statementSQL-L043
CASE
statements are used in SQL to perform conditional logic. They return a value based on whether a condition is true or false. The WHEN
condition within the COALESCE
function can be used to achieve the same result in a more concise and idiomatic way.
For example, instead of writing:
SELECT CASE
WHEN column1 IS NULL THEN column2
ELSE column1
END
FROM table;
You can write:
SELECT COALESCE(column1, column2)
FROM table;
Both statements return the value of column1
if it is not NULL
, otherwise, they return the value of column2
.
Bad practice
SELECT
CASE
WHEN fab > 0 THEN true
ELSE false
END AS is_fab
FROM fancy_table;
-- This rule can also simplify CASE statements
-- that aim to fill NULL values.
SELECT
CASE
WHEN fab is null THEN 0
ELSE fab
END AS fab_clean
FROM fancy_table;
-- This also covers where the case statement
-- replaces NULL values with NULL values.
SELECT
CASE
WHEN fab is null THEN null
ELSE fab
END AS fab_clean
FROM fancy_table
Recommended
SELECT
COALESCE(fab > 0, false) AS is_fab
FROM fancy_table;
-- To fill NULL values.
select
COALESCE(fab, 0) AS fab_clean
FROM fancy_table;
-- NULL filling NULL.
SELECT fab AS fab_clean
FROM fancy_table