[ http://issues.apache.org/jira/browse/DERBY-1575?page=comments#action_12431350 ] Christian d'Heureuse commented on DERBY-1575: ---------------------------------------------
The patch contains the following lines that are not correct: <codeblock><b>CASE WHEN <i>booleanExpression</i> [ WHEN <i>booleanExpression</i> ]... THEN <i>thenExpression</i> ELSE <i>elseExpression</i> END</b></codeblock> I suggest to change that to: <codeblock><b>CASE WHEN <i>booleanExpression</i> THEN <i>thenExpression</i> [ WHEN <i>booleanExpression</i> THEN <i>thenExpression</i> ]... ELSE <i>elseExpression</i> END</b></codeblock> In the SQL Standard ANSI/ISO/IEC 9075-2-1999, the ELSE clause is optional. So in order to be in conformance with the SQL standard, the syntax should be: <codeblock><b>CASE WHEN <i>booleanExpression</i> THEN <i>thenExpression</i> [ WHEN <i>booleanExpression</i> THEN <i>thenExpression</i> ]... [ ELSE <i>elseExpression</i> ] END</b></codeblock> But with Derby, omitting the ELSE clause seems to work only if the value type is Character. Examples: VALUES CASE WHEN 1 = 1 THEN 'a' END ==> OK, returns 'a' VALUES CASE WHEN 1 = 1 THEN 2 END ==> Error: Types 'INTEGER' and 'CHAR' are not type compatible. I assume that this effect is because Derby uses cast(null as char) as the default value for elseExpression. Maybe this could be changed by using an untyped Null value as the default value for elseExpression? > document full syntax of CASE expression > --------------------------------------- > > Key: DERBY-1575 > URL: http://issues.apache.org/jira/browse/DERBY-1575 > Project: Derby > Issue Type: Improvement > Components: Documentation > Reporter: Christian d'Heureuse > Assigned To: Kim Haase > Attachments: DERBY-1575.diff > > > The documentation at > http://db.apache.org/derby/docs/dev/ref/rrefcasenullif.html describes the > CASE expression syntax as: > CASE WHEN BooleanExpression THEN thenExpression ELSE elseExpression END > But the CASE expression supports more than one WHEN/THEN clauses. > I suggest to change the syntax description to: > CASE > WHEN BooleanExpression THEN Expression > [ WHEN BooleanExpression THEN Expression ] > ... > ELSE elseExpression > END > Example: > VALUES > CASE > WHEN 1 = 2 THEN 3 > WHEN 4 = 5 THEN 6 > ELSE 7 > END -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira