mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
Change-Id: Ib3ac978398eb3de1877e3cd26f662a34c3f131d0 Reviewed-on: http://gerrit.cloudera.org:8080/11795 Reviewed-by: Alex Rodoni <arodoni@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
726 lines
24 KiB
XML
726 lines
24 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
|
|
<concept id="conditional_functions">
|
|
|
|
<title>Impala Conditional Functions</title>
|
|
|
|
<titlealts audience="PDF">
|
|
|
|
<navtitle>Conditional Functions</navtitle>
|
|
|
|
</titlealts>
|
|
|
|
<prolog>
|
|
<metadata>
|
|
<data name="Category" value="Impala"/>
|
|
<data name="Category" value="Impala Functions"/>
|
|
<data name="Category" value="SQL"/>
|
|
<data name="Category" value="Data Analysts"/>
|
|
<data name="Category" value="Developers"/>
|
|
<data name="Category" value="Querying"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
Impala supports the following conditional functions for testing equality, comparison
|
|
operators, and nullity:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<xref href="#conditional_functions/case">CASE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/case2">CASE2</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/coalesce">COALESCE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/decode">DECODE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/if">IF</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/ifnull">IFNULL</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/isfalse">ISFALSE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/isnotfalse">ISNOTFALSE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/isnottrue">ISNOTTRUE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/isnull">ISNULL</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/istrue">ISTRUE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nonnullvalue">NONNULLVALUE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nullif">NULLIF</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nullifzero">NULLIFZERO</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nullvalue">NULLVALUE</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nvl">NVL</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/nvl2">NVL2</xref>
|
|
</li>
|
|
|
|
<li>
|
|
<xref href="#conditional_functions/zeroifnull">ZEROIFNULL</xref>
|
|
</li>
|
|
</ul>
|
|
|
|
<dl>
|
|
<dlentry id="case">
|
|
|
|
<dt>
|
|
CASE a WHEN b THEN c [WHEN d THEN e]... [ELSE f] END
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Compares an expression to one or more possible values, and returns a
|
|
corresponding result when a match is found.
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_same_type"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p>
|
|
In this form of the <codeph>CASE</codeph> expression, the initial value
|
|
<codeph>A</codeph> being evaluated for each row it typically a column reference, or
|
|
an expression involving a column. This form can only compare against a set of
|
|
specified values, not ranges, multi-value comparisons such as
|
|
<codeph>BETWEEN</codeph> or <codeph>IN</codeph>, regular expressions, or
|
|
<codeph>NULL</codeph>.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
|
|
<p>
|
|
Although this example is split across multiple lines, you can put any or all parts
|
|
of a <codeph>CASE</codeph> expression on a single line, with no punctuation or other
|
|
separators between the <codeph>WHEN</codeph>, <codeph>ELSE</codeph>, and
|
|
<codeph>END</codeph> clauses.
|
|
</p>
|
|
<codeblock>select case x
|
|
when 1 then 'one'
|
|
when 2 then 'two'
|
|
when 0 then 'zero'
|
|
else 'out of range'
|
|
end
|
|
from t1;
|
|
</codeblock>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="case2">
|
|
|
|
<dt>
|
|
CASE WHEN a THEN b [WHEN c THEN d]... [ELSE e] END
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Tests whether any of a sequence of expressions is
|
|
<codeph>TRUE</codeph>, and returns a corresponding result for the first true
|
|
expression.
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_same_type"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p>
|
|
<codeph>CASE</codeph> expressions without an initial test value have more
|
|
flexibility. For example, they can test different columns in different
|
|
<codeph>WHEN</codeph> clauses, or use comparison operators such as
|
|
<codeph>BETWEEN</codeph>, <codeph>IN</codeph> and <codeph>IS NULL</codeph> rather
|
|
than comparing against discrete values.
|
|
</p>
|
|
|
|
<p>
|
|
<codeph>CASE</codeph> expressions are often the foundation of long queries that
|
|
summarize and format results for easy-to-read reports. For example, you might use a
|
|
<codeph>CASE</codeph> function call to turn values from a numeric column into
|
|
category strings corresponding to integer values, or labels such as <q>Small</q>,
|
|
<q>Medium</q> and <q>Large</q> based on ranges. Then subsequent parts of the query
|
|
might aggregate based on the transformed values, such as how many values are
|
|
classified as small, medium, or large. You can also use <codeph>CASE</codeph> to
|
|
signal problems with out-of-bounds values, <codeph>NULL</codeph> values, and so on.
|
|
</p>
|
|
|
|
<p>
|
|
By using operators such as <codeph>OR</codeph>, <codeph>IN</codeph>,
|
|
<codeph>REGEXP</codeph>, and so on in <codeph>CASE</codeph> expressions, you can
|
|
build extensive tests and transformations into a single query. Therefore,
|
|
applications that construct SQL statements often rely heavily on
|
|
<codeph>CASE</codeph> calls in the generated SQL code.
|
|
</p>
|
|
|
|
<p>
|
|
Because this flexible form of the <codeph>CASE</codeph> expressions allows you to
|
|
perform many comparisons and call multiple functions when evaluating each row, be
|
|
careful applying elaborate <codeph>CASE</codeph> expressions to queries that process
|
|
large amounts of data. For example, when practical, evaluate and transform values
|
|
through <codeph>CASE</codeph> after applying operations such as aggregations that
|
|
reduce the size of the result set; transform numbers to strings after performing
|
|
joins with the original numeric values.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
|
|
<p>
|
|
Although this example is split across multiple lines, you can put any or all parts
|
|
of a <codeph>CASE</codeph> expression on a single line, with no punctuation or other
|
|
separators between the <codeph>WHEN</codeph>, <codeph>ELSE</codeph>, and
|
|
<codeph>END</codeph> clauses.
|
|
</p>
|
|
<codeblock>select case
|
|
when dayname(now()) in ('Saturday','Sunday') then 'result undefined on weekends'
|
|
when x > y then 'x greater than y'
|
|
when x = y then 'x and y are equal'
|
|
when x is null or y is null then 'one of the columns is null'
|
|
else null
|
|
end
|
|
from t1;
|
|
</codeblock>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="coalesce">
|
|
|
|
<dt>
|
|
COALESCE(type v1, type v2, ...)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns the first specified argument that is not
|
|
<codeph>NULL</codeph>, or <codeph>NULL</codeph> if all arguments are
|
|
<codeph>NULL</codeph>.
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_same_type"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry rev="2.0.0" id="decode">
|
|
|
|
<dt>
|
|
DECODE(type expression, type search1, type result1 [, type search2, type result2 ...]
|
|
[, type default] )
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Compares the first argument, <codeph>expression</codeph>, to the
|
|
<codeph>search</codeph> expressions using the <codeph>IS NOT DISTINCT</codeph>
|
|
operator, and returns:
|
|
<ul>
|
|
<li>
|
|
The corresponding <codeph>result</codeph> when a match is found.
|
|
</li>
|
|
|
|
<li>
|
|
The first corresponding <codeph>result</codeph> if there are more than one
|
|
matching <codeph>search</codeph> expressions.
|
|
</li>
|
|
|
|
<li>
|
|
The <codeph>default</codeph> expression if none of the search expressions matches
|
|
the first argument <codeph>expression</codeph>.
|
|
</li>
|
|
|
|
<li>
|
|
<codeph>NULL</codeph> if the final <codeph>default</codeph> expression is omitted
|
|
and none of the <codeph>search</codeph> expressions matches the first argument.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
<b>Return type:</b> Same as the first argument with the following exceptions:
|
|
<ul>
|
|
<li>
|
|
Integer values are promoted to <codeph>BIGINT</codeph>.
|
|
</li>
|
|
|
|
<li>
|
|
Floating-point values are promoted to <codeph>DOUBLE</codeph>.
|
|
</li>
|
|
|
|
<li>
|
|
Use <codeph>CAST()</codeph> when inserting into a smaller numeric column.
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
<ul>
|
|
<li>
|
|
Can be used as shorthand for a <codeph>CASE</codeph> expression.
|
|
</li>
|
|
|
|
<li>
|
|
The first argument, <codeph>expression</codeph>, and the search expressions must
|
|
be of the same type or convertible types.
|
|
</li>
|
|
|
|
<li>
|
|
The result expression can be a different type, but all result expressions must be
|
|
of the same type.
|
|
</li>
|
|
|
|
<li>
|
|
Returns a successful match if the first argument is <codeph>NULL</codeph> and a
|
|
search expression is also <codeph>NULL</codeph>.
|
|
</li>
|
|
|
|
<li>
|
|
<codeph>NULL</codeph> can be used as a search expression.
|
|
</li>
|
|
</ul>
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
|
|
<p>
|
|
The following example translates numeric day values into weekday names, such as 1 to
|
|
Monday, 2 to Tuesday, etc.
|
|
</p>
|
|
<codeblock>SELECT event, DECODE(day_of_week, 1, "Monday", 2, "Tuesday", 3, "Wednesday",
|
|
4, "Thursday", 5, "Friday", 6, "Saturday", 7, "Sunday", "Unknown day")
|
|
FROM calendar;
|
|
</codeblock>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="if">
|
|
|
|
<dt>
|
|
IF(BOOLEAN condition, type ifTrue, type ifFalseOrNull)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Tests an expression and returns a corresponding result depending on
|
|
whether the result is <codeph>TRUE</codeph>, <codeph>FALSE</codeph>, or
|
|
<codeph>NULL</codeph>.
|
|
<p>
|
|
<b>Return type:</b> Same as the <codeph>ifTrue</codeph> argument value
|
|
</p>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry rev="1.3.0" id="ifnull">
|
|
|
|
<dt>
|
|
IFNULL(type a, type ifNull)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Alias for the <codeph>ISNULL()</codeph> function, with the same
|
|
behavior. To simplify porting SQL with vendor extensions to Impala.
|
|
<p conref="../shared/impala_common.xml#common/added_in_130"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="isfalse" rev="2.2.0">
|
|
|
|
<dt>
|
|
ISFALSE(BOOLEAN expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>TRUE</codeph> if the expression is
|
|
<codeph>FALSE</codeph>. Returns <codeph>FALSE</codeph> if the expression is
|
|
<codeph>TRUE</codeph> or <codeph>NULL</codeph>.
|
|
<p>
|
|
Same as the <codeph>IS FALSE</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
Similar to <codeph>ISNOTTRUE()</codeph>, except it returns the opposite value for a
|
|
<codeph>NULL</codeph> argument.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/boolean_functions_vs_expressions"
|
|
/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="isnotfalse" rev="2.2.0">
|
|
|
|
<dt>
|
|
ISNOTFALSE(BOOLEAN expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Tests if a Boolean expression is not <codeph>FALSE</codeph> (that is,
|
|
either <codeph>TRUE</codeph> or <codeph>NULL</codeph>). Returns <codeph>TRUE</codeph>
|
|
if so. If the argument is <codeph>NULL</codeph>, returns <codeph>TRUE</codeph>.
|
|
<p>
|
|
Same as the <codeph>IS NOT FALSE</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
Similar to <codeph>ISTRUE()</codeph>, except it returns the opposite value for a
|
|
<codeph>NULL</codeph> argument.
|
|
</p>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/for_compatibility_only"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/boolean_functions_vs_expressions"
|
|
/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="isnottrue" rev="2.2.0">
|
|
|
|
<dt>
|
|
ISNOTTRUE(BOOLEAN expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Tests if a Boolean expression is not <codeph>TRUE</codeph> (that is,
|
|
either <codeph>FALSE</codeph> or <codeph>NULL</codeph>). Returns <codeph>TRUE</codeph>
|
|
if so. If the argument is <codeph>NULL</codeph>, returns <codeph>TRUE</codeph>.
|
|
<p>
|
|
Same as the <codeph>IS NOT TRUE</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
Similar to <codeph>ISFALSE()</codeph>, except it returns the opposite value for a
|
|
<codeph>NULL</codeph> argument.
|
|
</p>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/boolean_functions_vs_expressions"
|
|
/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="isnull">
|
|
|
|
<dt>
|
|
ISNULL(type a, type ifNull)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Tests if an expression is <codeph>NULL</codeph>, and returns the
|
|
expression result value if not. If the first argument is <codeph>NULL</codeph>,
|
|
returns the second argument.
|
|
<p>
|
|
<b>Compatibility notes:</b> Equivalent to the <codeph>NVL()</codeph> function from
|
|
Oracle Database or <codeph>IFNULL()</codeph> from MySQL. The <codeph>NVL()</codeph>
|
|
and <codeph>IFNULL()</codeph> functions are also available in Impala.
|
|
</p>
|
|
|
|
<p>
|
|
<b>Return type:</b> Same as the first argument value
|
|
</p>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="istrue" rev="2.2.0">
|
|
|
|
<dt>
|
|
ISTRUE(BOOLEAN expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>TRUE</codeph> if the expression is
|
|
<codeph>TRUE</codeph>. Returns <codeph>FALSE</codeph> if the expression is
|
|
<codeph>FALSE</codeph> or <codeph>NULL</codeph>.
|
|
<p>
|
|
Same as the <codeph>IS TRUE</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
Similar to <codeph>ISNOTFALSE()</codeph>, except it returns the opposite value for a
|
|
<codeph>NULL</codeph> argument.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/for_compatibility_only"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/usage_notes_blurb"/>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/boolean_functions_vs_expressions"
|
|
/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="nonnullvalue" rev="2.2.0">
|
|
|
|
<dt>
|
|
NONNULLVALUE(type expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>TRUE</codeph> if the expression is non-null and
|
|
returns <codeph>FALSE</codeph> if the expression is <codeph>NULL</codeph>.
|
|
<p>
|
|
Same as the <codeph>IS NOT NULL</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
The converse of <codeph>NULLVALUE()</codeph>.
|
|
</p>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/for_compatibility_only"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry rev="1.3.0" id="nullif">
|
|
|
|
<dt>
|
|
NULLIF(type expr1, type expr2)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>NULL</codeph> if the two specified arguments are
|
|
equal. If the specified arguments are not equal, returns the value of
|
|
<varname>expr1</varname>. The data types of the expressions must be compatible,
|
|
according to the conversion rules from <xref href="impala_datatypes.xml#datatypes"/>.
|
|
You cannot use an expression that evaluates to <codeph>NULL</codeph> for
|
|
<varname>expr1</varname>; that way, you can distinguish a return value of
|
|
<codeph>NULL</codeph> from an argument value of <codeph>NULL</codeph>, which would
|
|
never match <varname>expr2</varname>.
|
|
<p>
|
|
<b>Usage notes:</b> This function is effectively shorthand for a
|
|
<codeph>CASE</codeph> expression of the form:
|
|
</p>
|
|
<codeblock>CASE
|
|
WHEN <varname>expr1</varname> = <varname>expr2</varname> THEN NULL
|
|
ELSE <varname>expr1</varname>
|
|
END</codeblock>
|
|
<p>
|
|
It is commonly used in division expressions, to produce a <codeph>NULL</codeph>
|
|
result instead of a divide-by-zero error when the divisor is equal to zero:
|
|
</p>
|
|
<codeblock>select 1.0 / nullif(c1,0) as reciprocal from t1;</codeblock>
|
|
<p>
|
|
You might also use it for compatibility with other database systems that support the
|
|
same <codeph>NULLIF()</codeph> function.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/return_same_type"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_130"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry rev="1.3.0" id="nullifzero">
|
|
|
|
<dt>
|
|
NULLIFZERO(type numeric_expr)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>NULL</codeph> if the numeric expression evaluates to
|
|
0, otherwise returns the result of the expression.
|
|
<p>
|
|
<b>Usage notes:</b> Used to avoid error conditions such as divide-by-zero in numeric
|
|
calculations. Serves as shorthand for a more elaborate <codeph>CASE</codeph>
|
|
expression, to simplify porting SQL with vendor extensions to Impala.
|
|
</p>
|
|
|
|
<p>
|
|
<b>Return type:</b> Same type as the input argument
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_130"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="nullvalue" rev="2.2.0">
|
|
|
|
<dt>
|
|
NULLVALUE(type expression)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns <codeph>TRUE</codeph> if the expression is
|
|
<codeph>NULL</codeph>, and returns <codeph>FALSE</codeph> otherwise.
|
|
<p>
|
|
Same as the <codeph>IS NULL</codeph> operator.
|
|
</p>
|
|
|
|
<p>
|
|
The converse of <codeph>NONNULLVALUE()</codeph>.
|
|
</p>
|
|
|
|
<p
|
|
conref="../shared/impala_common.xml#common/return_type_boolean"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/for_compatibility_only"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_220"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="nvl" rev="1.1">
|
|
|
|
<dt>
|
|
NVL(type a, type ifNull)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Alias for the <codeph>ISNULL()</codeph> function. Returns the first
|
|
argument if the first argument is not <codeph>NULL</codeph>. Returns the second
|
|
argument if the first argument is <codeph>NULL</codeph>.
|
|
<p>
|
|
Equivalent to the <codeph>NVL()</codeph> function in Oracle Database or
|
|
<codeph>IFNULL()</codeph> in MySQL.
|
|
</p>
|
|
|
|
<p>
|
|
<b>Return type:</b> Same as the first argument value
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_11"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry id="nvl2" rev="2.9.0 IMPALA-5030">
|
|
|
|
<dt>
|
|
NVL2(type a, type ifNotNull, type ifNull)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns the second argument,
|
|
<codeph>ifNotNull</codeph>, if the first argument is not
|
|
<codeph>NULL</codeph>. Returns the third argument,
|
|
<codeph>ifNull</codeph>, if the first argument is
|
|
<codeph>NULL</codeph>. <p> Equivalent to the <codeph>NVL2()</codeph>
|
|
function in Oracle Database. </p>
|
|
<p>
|
|
<b>Return type:</b> Same as the first argument value </p>
|
|
<p conref="../shared/impala_common.xml#common/added_in_290"/>
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
<codeblock>
|
|
SELECT NVL2(NULL, 999, 0); -- Returns 0
|
|
SELECT NVL2('ABC', 'Is Not Null', 'Is Null'); -- Returns 'Is Not Null'</codeblock>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
|
|
<dlentry rev="1.3.0" id="zeroifnull">
|
|
|
|
<dt>
|
|
ZEROIFNULL(type numeric_expr)
|
|
</dt>
|
|
|
|
<dd>
|
|
<b>Purpose:</b> Returns 0 if the numeric expression evaluates to
|
|
<codeph>NULL</codeph>, otherwise returns the result of the expression.
|
|
<p>
|
|
<b>Usage notes:</b> Used to avoid unexpected results due to unexpected propagation
|
|
of <codeph>NULL</codeph> values in numeric calculations. Serves as shorthand for a
|
|
more elaborate <codeph>CASE</codeph> expression, to simplify porting SQL with vendor
|
|
extensions to Impala.
|
|
</p>
|
|
|
|
<p>
|
|
<b>Return type:</b> Same type as the input argument
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/added_in_130"/>
|
|
</dd>
|
|
|
|
</dlentry>
|
|
</dl>
|
|
|
|
</conbody>
|
|
|
|
</concept>
|