As soon as a WHEN
clause contains too much logic this highly decreases the readability of the overall expression. In such case, the
content of the WHEN
clause may be extracted into a dedicated function.
Noncompliant code example
With a threshold of 5:
SELECT CASE column1
WHEN 1 THEN
CASE column2
WHEN 'a' THEN -- Noncompliant, 7 lines till ELSE
'x'
ELSE
'y'
END
ELSE
42
END
FROM table1;
Compliant solution
SELECT CASE
WHEN column1 = 1 AND column2 = 'a' THEN
'x'
WHEN column1 = 1 THEN
'y'
ELSE
42
END
FROM table1;