Isnull
تابع isNull بررسی میکند که آیا یک مقدار برابر null است یا نه؛ null در دیتابیسها یک مقدار «جایخالی» ویژه است که زمانی استفاده میشود که دادهٔ واقعی موجود یا مشخص نیست.
نحو (Syntax)
isNull(text column)
میتوانید از isNull در فیلترهای سفارشی، یا بهعنوان شرط در تجمیعهای شرطی CountIf و SumIf استفاده کنید.
برای ساخت ستون سفارشی با isNull باید آن را با تابع دیگری که مقدار بولی (true/false) میپذیرد ترکیب کنید، مانند case.
رفتار متابیس با null
در جدولهای متابیس، مقادیر null بهصورت سلولهای خالی نمایش داده میشوند. علاوه بر این، در ستونهای متنی، رشتههای خالی و رشتههایی که فقط از کاراکتر فاصله (Whitespace) تشکیل شدهاند نیز خالی دیده میشوند.
جدول زیر خروجی تابع isNull را روی حالتهای مختلف نشان میدهد:
| نمایش در متابیس | مقدار در دیتابیس | isNull(value) |
|---|---|---|
null | true | |
"" (رشتهٔ خالی) | false* | |
" " (فاصلهٔ خالی) | false | |
| kitten | "kitten" | false |
* در دیتابیسهای Oracle و Vertica، رشتههای خالی بهجای مقدار مجزا، عملاً بهصورت null تفسیر میشوند.
ساخت ستون بولی سفارشی
برای ساخت ستون سفارشی با isNull باید آن را با یک تابع دیگر ترکیب کنید.
مثلاً اگر بخواهید ستونی بسازید که وقتی ستون Discount مقدار null دارد، مقدار true، و در غیر این صورت مقدار false داشته باشد، میتوانید از عبارت case استفاده کنید:
case(isNull([Discount]), true, false)
جایگزینی مقادیر null با مقدار دیگر
میتوانید isNull را با عبارت case ترکیب کنید تا اطلاعاتِ غایب را با متن توصیفیتری جایگزین کنید.
مثلاً اگر بخواهید ستونی بسازید که وقتی ستون اصلی [Feedback] مقدار null دارد، "Unknown feedback" را نمایش دهد و در غیر این صورت همان مقدار فیدبک را نشان دهد، میتوانید از این عبارت استفاده کنید:
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
| Feedback | case(isNull([Feedback]), "Unknown feedback.", [Feedback]) |
|---|---|
null | "Unknown feedback." |
"" | "" |
"I like your style." | "I like your style." |
انواع دادهٔ قابل قبول
| نوع داده | سازگار با isNull |
|---|---|
| String | ✅ |
| Number | ✅ |
| Timestamp | ✅ |
| Boolean | ✅ |
| JSON | ✅ |
محدودیتها
- در متابیس، برای استفادهٔ عملی از
isNullباید آن را با عبارتی ترکیب کنید که آرگومان بولی (true/false) میپذیرد (مثلcase). isNullدر هر بار فراخوانی فقط یک مقدار را بررسی میکند. اگر میخواهید سلولهای خالی را در چند ستون مدیریت کنید، بهتر است از عبارتcoalesceکمک بگیرید.- اگر بهنظر میرسد
isNullروی سلولهای خالی شما اثری ندارد، احتمالاً با رشتههای خالی طرف هستید. در این صورت از عبارتisEmptyاستفاده کنید.
توابع مرتبط
در این بخش توابع و فرمولهایی را میبینید که میتوانند بهجای عبارت isNull متابیس استفاده شوند، همراه با نکاتی برای انتخاب گزینهٔ مناسب.
مثالهای زیر همه از جدول نمونهٔ جایگزینی مقدارهای null استفاده میکنند:
| Feedback | case(isNull([Feedback]), "Unknown feedback.", [Feedback]) |
|---|---|
null | "Unknown feedback." |
"" | "" |
"I like your style." | "I like your style." |
SQL
در اغلب موارد (بهجز NoSQLها)، سؤالهایی که با Query builder ساخته میکنید به SQL ترجمه شده و روی دیتابیس اجرا میشوند.
CASE WHEN Feedback IS NULL THEN 'Unknown feedback'
ELSE Feedback END
از نظر منطقی معادل عبارت زیر در متابیس است:
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
Spreadsheets
در Spreadsheetها، مقدار #N/A تقریباً نقش null در دیتابیس را بازی میکند (نشاندهندهٔ دادهٔ «نامشخص» یا «مفقود»).
اگر ستون نمونهٔ Feedback در ستون A باشد، فرمول زیر:
=IF(ISNA(A2), "Unknown feedback.", A2)
معادل این عبارت در متابیس است:
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
Python
در کتابخانههای NumPy و pandas معمولاً بهجای null از NaN یا NA استفاده میشود.
اگر ستون نمونهٔ Feedback را در یک ستون DataFrame به نام df["Feedback"] داشته باشید:
df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"])
این کد معادل عبارت زیر در متابیس است:
case(isNull([Feedback]), "Unknown feedback.", [Feedback])