ClickHouse/docs/ja/sql_reference/functions/functions_for_nulls.md
2020-04-04 12:15:31 +03:00

6.8 KiB

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 63 ヌル可能な引数の操作

Null可能な集計を操作するための関数

isNull

引数が NULL.

isNull(x)

パラメータ

  • x — A value with a non-compound data type.

戻り値

  • 1 もし xNULL.
  • 0 もし x はない NULL.

例えば

入力テーブル

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

クエリ

SELECT x FROM t_null WHERE isNull(y)
┌─x─┐
│ 1 │
└───┘

isNotNull

引数が NULL.

isNotNull(x)

パラメータ:

  • x — A value with a non-compound data type.

戻り値

  • 0 もし xNULL.
  • 1 もし x はない NULL.

例えば

入力テーブル

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

クエリ

SELECT x FROM t_null WHERE isNotNull(y)
┌─x─┐
│ 2 │
└───┘

合体

左から右にチェックするかどうか NULL 引数が渡され、最初の非を返します-NULL 引数。

coalesce(x,...)

パラメータ:

  • 非化合物タイプの任意の数のパラメーター。 すべてのパラメータに対応していることが必要となるデータ型になります。

戻り値

  • 最初の非-NULL 引数。
  • NULL すべての引数が NULL.

例えば

顧客に連絡する複数の方法を指定する可能性のある連絡先のリストを考えてみましょう。

┌─name─────┬─mail─┬─phone─────┬──icq─┐
│ client 1 │ ᴺᵁᴸᴸ │ 123-45-67 │  123 │
│ client 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ      │ ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴──────┘

その mailphone フィールドの型はStringですが、 icq フィールドは UInt32、それはに変換する必要があります String.

コンタクトリストから顧客の最初の利用可能なコンタクトメソッドを取得する:

SELECT coalesce(mail, phone, CAST(icq,'Nullable(String)')) FROM aBook
┌─name─────┬─coalesce(mail, phone, CAST(icq, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                            │
│ client 2 │ ᴺᵁᴸᴸ                                                 │
└──────────┴──────────────────────────────────────────────────────┘

ifNull

メイン引数がある場合は、代替値を返します NULL.

ifNull(x,alt)

パラメータ:

  • x — The value to check for NULL.
  • alt — The value that the function returns if xNULL.

戻り値

  • を値 x,もし x はない NULL.
  • を値 alt,もし xNULL.

例えば

SELECT ifNull('a', 'b')
┌─ifNull('a', 'b')─┐
│ a                │
└──────────────────┘
SELECT ifNull(NULL, 'b')
┌─ifNull(NULL, 'b')─┐
│ b                 │
└───────────────────┘

nullifname

を返します NULL 引数が等しい場合。

nullIf(x, y)

パラメータ:

x, y — Values for comparison. They must be compatible types, or ClickHouse will generate an exception.

戻り値

  • NULL 引数が等しい場合。
  • その x 引数が等しくない場合の値。

例えば

SELECT nullIf(1, 1)
┌─nullIf(1, 1)─┐
│         ᴺᵁᴸᴸ │
└──────────────┘
SELECT nullIf(1, 2)
┌─nullIf(1, 2)─┐
│            1 │
└──────────────┘

assumeNotNull

結果はtypeの値になります Nullable 非のために- Nullable 値がない場合、 NULL.

assumeNotNull(x)

パラメータ:

  • x — The original value.

戻り値

  • 元の値から非-Nullable そうでない場合はタイプします NULL.
  • のデフォルト値。-Nullable 元の値が NULL.

例えば

考慮する t_null テーブル。

SHOW CREATE TABLE t_null
┌─statement─────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_null ( x Int8,  y Nullable(Int8)) ENGINE = TinyLog │
└───────────────────────────────────────────────────────────────────────────┘
┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
└───┴──────┘

を適用 assumeNotNull に機能 y コラム

SELECT assumeNotNull(y) FROM t_null
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
SELECT toTypeName(assumeNotNull(y)) FROM t_null
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘

toNullable

引数の型を次のように変換します Nullable.

toNullable(x)

パラメータ:

  • x — The value of any non-compound type.

戻り値

  • Aの入力値 Nullable タイプ。

例えば

SELECT toTypeName(10)
┌─toTypeName(10)─┐
│ UInt8          │
└────────────────┘
SELECT toTypeName(toNullable(10))
┌─toTypeName(toNullable(10))─┐
│ Nullable(UInt8)            │
└────────────────────────────┘

元の記事