توابع برای کار با Nullable مصالح 

isNull 

بررسی اینکه بحث چیست NULL.

isNull(x)

پارامترها

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

مقدار بازگشتی

  • 1 اگر x هست NULL.
  • 0 اگر x نیست NULL.

مثال

جدول ورودی

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

پرسوجو

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

اینترنت 

بررسی اینکه بحث چیست NULL.

isNotNull(x)

پارامترها:

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

مقدار بازگشتی

  • 0 اگر x هست NULL.
  • 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 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ      │ ᴺᵁᴸᴸ │
└──────────┴──────┴───────────┴──────┘

این mail و phone زمینه های رشته نوع هستند, اما 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 x هست NULL.

مقادیر بازگشتی

  • مقدار x اگر x نیست NULL.
  • مقدار alt اگر x هست NULL.

مثال

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

nullIf 

بازگشت 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 │
└──────────────┘

قابل قبول 

نتایج در ارزش نوع 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                         │
└──────────────────────────────┘

قابل تنظیم 

تبدیل نوع استدلال به Nullable.

toNullable(x)

پارامترها:

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

مقدار بازگشتی

  • مقدار ورودی با یک Nullable نوع.

مثال

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

مقاله اصلی

Rating: 2.5 - 2 votes

Was this content helpful?
★★★☆☆