62 / 100

COALESCE

Birinchi NULL bo'lmagan qiymat

Kirish: Ushbu qo'llanmada siz PostgreSQL COALESCE() funksiyasi yordamida NULL qiymatlarni qayta ishlash va argumentlar ro'yxatidan birinchi NULL bo'lmagan qiymatni tanlab olishni o'rganasiz.

PostgreSQL COALESCE() funksiyasiga kirish

PostgreSQLda NULL noma'lum yoki kiritilmagan qiymatni bildiradi.

COALESCE() funksiyasi bir nechta argumentlarni qabul qiladi va ularni chapdan o'ngga qarab tekshirib, duch kelgan birinchi NULL bo'lmagan qiymatni qaytaradi.

Funksiyaning sintaksisi:

query.sql
COALESCE(value1, value2, ...)
  • Agar barcha argumentlar NULL bo'lsa, COALESCE() funksiyasi NULL qaytaradi.
  • Kamida bitta aniq qiymat topilsa, o'sha qiymat natija sifatida beriladi va keyingi argumentlar tekshirilmaydi.

PostgreSQL COALESCE() funksiyasiga misollar

Foydalanuvchilar profillarini saqlovchi profiles jadvali ustida misollarni ko'ramiz:

query.sql
SELECT
  first_name,
  work_phone
FROM
  profiles
ORDER BY
  first_name;

Natija:

matn
first_name |  work_phone
------------+--------------
 Alice      | NULL
 Bob        | NULL
 Charlie    | NULL
 Jane       | 408-456-7891
 John       | 408-456-7890

Ko'rib turganingizdek, Alice, Bob va Charlie uchun ish telefoni (work_phone) kiritilmagan (NULL).

1. NULL o'rniga zaxira matn chiqarish

Natija chiroyli va tushunarli bo'lishi uchun NULL o'rniga 'Mavjud emas' (yoki 'N/A') yozuvini chiqaramiz:

query.sql
SELECT
  first_name,
  COALESCE(work_phone, 'N/A') AS work_phone
FROM
  profiles
ORDER BY
  first_name;

Natija:

matn
first_name |  work_phone
------------+--------------
 Alice      | N/A
 Bob        | N/A
 Charlie    | N/A
 Jane       | 408-456-7891
 John       | 408-456-7890

Agar work_phone mavjud bo'lsa telefon raqami, agar NULL bo'lsa 'N/A' chiqadi.

2. Bir nechta zaxira ustunlarini tekshirish

Aytaylik, foydalanuvchilar bilan bog'lanish uchun ish telefoni bo'lmasa uy telefonini (home_phone), ikkalasi ham bo'lmasa 'N/A' chiqarmoqchisiz:

query.sql
SELECT
  first_name,
  COALESCE(work_phone, home_phone, 'N/A') AS phone
FROM
  profiles
ORDER BY
  first_name;

Natija:

matn
first_name |    phone
------------+--------------
 Alice      | 408-111-4444
 Bob        | 408-111-5555
 Charlie    | N/A
 Jane       | 408-456-7891
 John       | 408-456-7890

Bunda:

  • Alice va Bobning ish telefoni yo'q, lekin uy telefoni bor — ularning uy telefoni chiqdi.
  • Charlieda ikkala telefon ham yo'q — unga 'N/A' chiqdi.
  • Jane va Johnda ish telefoni bor — ularning ish telefoni chiqdi.

Xulosa

  • Berilgan ro'yxatdan birinchi NULL bo'lmagan qiymatni tanlash uchun COALESCE(v1, v2, ...) funksiyasidan foydalaning.
  • COALESCE hisobotlarda NULL o'rniga sukut bo'yicha qiymatlar yoki matnlar ko'rsatishning eng sodda va samarali usulidir.