README.case 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. SQL Language Extension: CASE
  2. Function:
  3. Allow the result of a column to be determined by a the results of a
  4. case expression.
  5. Author:
  6. Arno Brinkman <[email protected]>
  7. Format:
  8. <case expression> ::=
  9. <case abbreviation>
  10. | <case specification>
  11. <case abbreviation> ::=
  12. NULLIF <left paren> <value expression> <comma> <value expression> <right paren>
  13. | COALESCE <left paren> <value expression> { <comma> <value expression> }... <right paren>
  14. <case specification> ::=
  15. <simple case>
  16. | <searched case>
  17. <simple case> ::=
  18. CASE <value expression>
  19. <simple when clause>...
  20. [ <else clause> ]
  21. END
  22. <searched case> ::=
  23. CASE
  24. <searched when clause>...
  25. [ <else clause> ]
  26. END
  27. <simple when clause> ::= WHEN <when operand> THEN <result>
  28. <searched when clause> ::= WHEN <search condition> THEN <result>
  29. <when operand> ::= <value expression>
  30. <else clause> ::= ELSE <result>
  31. <result> ::=
  32. <result expression>
  33. | NULL
  34. <result expression> ::= <value expression>
  35. Notes:
  36. See also README.data_type_results_of_aggregations.txt
  37. Examples:
  38. A) (simple)
  39. SELECT
  40. o.ID,
  41. o.Description,
  42. CASE o.Status
  43. WHEN 1 THEN 'confirmed'
  44. WHEN 2 THEN 'in production'
  45. WHEN 3 THEN 'ready'
  46. WHEN 4 THEN 'shipped'
  47. ELSE 'unknown status ''' || o.Status || ''''
  48. END
  49. FROM
  50. Orders o
  51. B) (searched)
  52. SELECT
  53. o.ID,
  54. o.Description,
  55. CASE
  56. WHEN (o.Status IS NULL) THEN 'new'
  57. WHEN (o.Status = 1) THEN 'confirmed'
  58. WHEN (o.Status = 3) THEN 'in production'
  59. WHEN (o.Status = 4) THEN 'ready'
  60. WHEN (o.Status = 5) THEN 'shipped'
  61. ELSE 'unknown status ''' || o.Status || ''''
  62. END
  63. FROM
  64. Orders o