diff options
author | Adam Chlipala <adam@chlipala.net> | 2011-11-19 10:43:57 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2011-11-19 10:43:57 -0500 |
commit | e43dd849a122a59fa2c22278ddf9c9a09d1550bd (patch) | |
tree | b8e125a96ec1466c542b24651ef1ce4027f21193 /doc | |
parent | 9a047b4f248ace0615eaf18ba130e14e49634723 (diff) |
COALESCE
Diffstat (limited to 'doc')
-rw-r--r-- | doc/manual.tex | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/doc/manual.tex b/doc/manual.tex index 84b300e7..03d29701 100644 --- a/doc/manual.tex +++ b/doc/manual.tex @@ -1709,6 +1709,15 @@ $$\begin{array}{l} \hspace{.1in} \to \mt{sql\_exp} \; \mt{tables} \; \mt{agg} \; \mt{exps} \; (\mt{option} \; \mt{t}) \to \mt{sql\_exp} \; \mt{tables} \; \mt{agg} \; \mt{exps} \; \mt{bool} \end{array}$$ +As another way of dealing with null values, there is also a restricted form of the standard \cd{COALESCE} function. +$$\begin{array}{l} + \mt{val} \; \mt{sql\_coalesce} : \mt{tables} ::: \{\{\mt{Type}\}\} \to \mt{agg} ::: \{\{\mt{Type}\}\} \to \mt{exps} ::: \{\mt{Type}\} \\ + \hspace{.1in} \to \mt{t} ::: \mt{Type} \\ + \hspace{.1in} \to \mt{sql\_exp} \; \mt{tables} \; \mt{agg} \; \mt{exps} \; (\mt{option} \; \mt{t}) \\ + \hspace{.1in} \to \mt{sql\_exp} \; \mt{tables} \; \mt{agg} \; \mt{exps} \; \mt{t} \\ + \hspace{.1in} \to \mt{sql\_exp} \; \mt{tables} \; \mt{agg} \; \mt{exps} \; \mt{t} +\end{array}$$ + We have generic nullary, unary, and binary operators. $$\begin{array}{l} \mt{con} \; \mt{sql\_nfunc} :: \mt{Type} \to \mt{Type} \\ @@ -2140,6 +2149,7 @@ $$\begin{array}{rrcll} &&& \ell & \textrm{primitive type literals} \\ &&& \mt{NULL} & \textrm{null value (injection of $\mt{None}$)} \\ &&& E \; \mt{IS} \; \mt{NULL} & \textrm{nullness test} \\ + &&& \mt{COALESCE}(E, E) & \textrm{take first non-null value} \\ &&& n & \textrm{nullary operators} \\ &&& u \; E & \textrm{unary operators} \\ &&& E \; b \; E & \textrm{binary operators} \\ |