uy - Smart TV
1c bu erda qiymatga teng yoki null. isnull() funksiyasidan foydalanish

27.06.2017

1C so'rovlarida NULL, ISNULL() va IS NULL

NULL nima

NULL so'rov natijasida qiymat yo'q degan ma'noni anglatadi (bu bo'sh qiymat emas, null emas, null havola emas).
Masalan, so'rovlar jadvallarini ulash natijasida ulanish maydonlari yordamida ulanishda jadvallarning birida qiymat topilmadi. Yoki so'rov mavjud bo'lmagan atributga (xususiyatga) ishora qiladi.

NULL NULL bilan bir xil emas!

Agar 1C so'rovida siz NULLni tekshirish bilan tanlov (shart) qo'ymoqchi bo'lsangiz, u holda "WHERE VT.Field1 = NULL" kabi konstruktsiya har doim qaytib keladi. YOLG'ON! Tekshirish uchun siz maxsus operatordan foydalanishingiz kerak

1C so'rovida NULL BOR

NULL qiymatini tekshirish (yoki qiymatlar bilan ishlash) uchun quyidagi konstruktsiyadan foydalanishingiz kerak "WHERE VT.Field1 IS NULL" Yoki boshqa misol, konstruktsiyada foydalaning TANLOV"TANLASH | VT.Field1 NULL BO'LSA | KEYIN" Shuni ta'kidlash kerakki, maydonni NULL uchun tekshirish funktsiyasi 1C so'rovlarida eng ko'p resurs talab qiladigan funksiyalardan biridir. Shuning uchun, agar siz uni so'rov sharoitida ishlatmoqchi bo'lsangiz, bunday chekni almashtirish mumkinmi yoki yo'qligini ko'rib chiqing ichki qo'shilish(tanlovda faqat ikkala jadvaldagi yozuvlar qoladigan so'rovlarga qo'shilish turi).

1C so'rovida ISNULL() funktsiyasi

Funktsiya ISNULL() so'rov maydonidagi etishmayotgan qiymatni belgilangan qiymat bilan almashtirish imkonini beradi (standart qiymat, stub).
Misol uchun, agar mahsulot tannarxi haqida hech qanday ma'lumot bo'lmasa, biz uni 0 (nol) ga teng "tanlash | ISNULL(T.Price, 0) AS Narx | FROM Qolgan tovarlar AS T" ga tengligini ko'rsatamiz.

Xulosa

So'rovlarni to'g'ri va optimal tarzda yozing. Chunki yomon so'rov tormoz va yomon kodni anglatadi)

Salom.
Ibtidoiy ma'lumotlar turlarini davom ettirib, biz yaqinda ularni ko'rib chiqdik va bugun biz gaplashamiz NULL yozing.

NULL turi faqat bitta qiymatni, “NULL” qiymatini o'z ichiga olishi mumkin bo'lgan literaldir.
NULL - Null havolasi, bo'sh joy yoki Aniqlanmagan turiga teng emas.

Ma'lumotlar bazasi bilan ishlashda (jadvallarni birlashtirishda) foydalaniladi, ma'lumotlar bazasi bilan ishlashda etishmayotgan qiymatni aniqlash uchun ishlatiladi.
Ushbu qiymatni o'zgaruvchiga belgilash orqali NULL qiymatini olish mumkin:
O'zgaruvchi = NULL.

NULL tipidagi qiymatlar bir jadvaldagi element boshqasidan mos keladigan elementga ega bo'lmaganda birlashmalar natijasida hosil bo'ladi. NULL tipidagi qiymat o'ziga xos xususiyatlarga ega:
- NULL qiymatni har qanday boshqa argument bilan solishtirish har doim yolg'onni qaytaradi;

NULL qiymatini aniqlash uchun konstruksiyadan foydalaning IS NULL (NULL).
NULL turini aylantirish uchun funksiyadan foydalaning ISNULL (isNULL).

So'rov natijasida NULL qiymatlarini o'z ichiga olgan maydonlarni kesish uchun quyidagi konstruktsiyalar qo'llaniladi: - NULL emas - NULL emas

Misollar

NULL qiymatini tekshirishga misol

SELECT katalog. Nomenklatura. Ism, katalog. Nomenklatura. PurchasingPrice WHERE katalogi. Nomenklatura. PurchasePrice Ha NULL

ISNULL() funksiyasiga misol
ISNULL() funksiyasining qaytariladigan qiymati: agar birinchi parametrda NULL qiymati bo'lmasa, birinchi parametrning qiymati, aks holda ikkinchi parametrning qiymati. Agar birinchi parametrning turi qator yoki raqam bo'lsa, ikkinchi parametr birinchi parametr turiga aylantiriladi.

// Miqdor maydoni bo'yicha miqdorni oling. Hech qanday yozuv bo'lmasa, 0 ni oling Hujjatdan Miqdor sifatida ISNULL(SUM(Miqdor), 0 ) ni tanlang. Expense Inc. Murakkab

Hurmat bilan, 1C Programmer.
Fikrlaringizni qoldiring, men sizning fikringiz bilan qiziqaman.

1C so'rovlar tili 7.7 va 8 versiyalari orasidagi asosiy farqlardan biridir. 1C dasturlashni o'rganishda eng muhim nuqtalardan biri so'rovlar tilidir. 1C 8.3 da so'rovlar ma'lumotlarni olish uchun eng kuchli va samarali vositadir. So'rovlar tili ma'lumotlar bazasidan ma'lumotlarni qulay tarzda olish imkonini beradi.

Sintaksisning o'zi klassik T-SQL-ni juda eslatadi, bundan tashqari 1C da so'rovlar tilidan foydalangan holda siz faqat Select konstruktsiyasi yordamida ma'lumotlarni qabul qilishingiz mumkin. Til, shuningdek, murakkabroq konstruksiyalarni qo'llab-quvvatlaydi, masalan, (so'rov ichidagi so'rov). 1C 8 dagi so'rovlar ham kirill, ham lotin tilida yozilishi mumkin.

Ushbu maqolada men 1C so'rovlar tilidagi asosiy kalit so'zlar haqida gapirishga harakat qilaman:

  • tanlang
  • ruxsat berilgan
  • har xil
  • ifodalash
  • birinchi
  • o'zgartirish uchun
  • ma'nosi
  • qiymat turi (va REFERENCE operatori)
  • tanlash
  • tomonidan guruhlash
  • ega
  • ISNULL
  • Ha NULL
  • ulanishlar - o'ng, chap, ichki, to'liq.

Shuningdek, 1C tilining ba'zi kichik fokuslari, ulardan foydalanib siz so'rov matnini optimal tarzda qurishingiz mumkin.

1C 8.2 tizimida so'rovlarni tuzatish uchun maxsus vosita - so'rovlar konsoli taqdim etiladi. Siz tavsifni ko'rishingiz va havoladan foydalanib yuklab olishingiz mumkin -.

Keling, 1C so'rovlar tilining eng muhim va qiziqarli operatorlarini ko'rib chiqaylik.

TANLASH

1C Enterprise 8 so'rovlar tilida har qanday so'rov kalit so'z bilan boshlanadi TANLANG. 1C tilida UPDATE, DELETE, CREATE TABLE, INSERT konstruktsiyalari mavjud emas, bu manipulyatsiyalar ob'ekt texnologiyasida amalga oshiriladi. Uning maqsadi faqat ma'lumotlarni o'qishdir.

Masalan:

TANLANG
Joriy katalog.Nomi
FROM
Katalog.Nomenklatura AS Joriy Katalog

So'rov element nomlari bilan jadvalni qaytaradi.

Struktura yaqinida TANLANG kalit so'zlarni topishingiz mumkin O'ZGARISH UCHUN, RUXSAT BERILGAN, TURLI, BIRINCHI

RUXSAT BERILGAN— jadvaldan faqat joriy foydalanuvchi huquqiga ega boʻlgan yozuvlarni tanlaydi.

TURLI— natijada takroriy satrlar boʻlmasligini bildiradi.

TANLASH (CASE)

Ko'pincha bu dizayn dasturchilar tomonidan kam baholanadi. Uning ishlatilishiga misol:

Joriy katalog. nomi,

QACHON Current Directory.Service KEYIN

"Xizmat"

Nomenklaturani QANDAY KO'RISHNI TUGASH

Katalog.Nomenklatura AS Joriy Katalog

Misol "Mahsulot turi" maydonida matn qiymatini qaytaradi - "Mahsulot" yoki "Xizmat".

QAYERDA

Qabul qilingan ma'lumotlarga tanlovni o'rnatishga imkon beruvchi 1C so'rovlar tilining dizayni. E'tibor bering, tizim barcha ma'lumotlarni serverdan oladi va shundan keyingina u ushbu parametr asosida tanlanadi.

TANLANG
Katalog.Nomi
FROM
Joriy katalog.Nomenklatura AS Joriy katalog
WHERE CurrentDirectory.Service = TRUE

Misolda biz "Xizmat" atributining qiymati "True" ga o'rnatilgan yozuvlarni tanlaymiz. Ushbu misolda biz quyidagi shartni bajarishimiz mumkin:

"Xizmat qayerda"

Asosan, biz kalit so'zdan keyingi ifoda "True" ga teng bo'lgan qatorlarni tanlaymiz.

Siz iboralarda to'g'ridan-to'g'ri shartlardan foydalanishingiz mumkin:

QAYER Kodi = "005215"

Shartlarda "VALUE()" operatoridan foydalanib, 1C so'rovida oldindan belgilangan elementlar va raqamlarga kirishdan foydalaning:

QAYER Element turi = Qiymat (Ro'yxatga olish.Item turlari.Mahsulot)

Vaqt qiymatlari quyidagicha belgilanishi mumkin:

QAYERDA Qabul qilingan sana > DATETIME(2012,01,01):

Ko'pincha shartlar so'rovga o'tkaziladigan parametrlar sifatida belgilanadi:

1C da 267 ta video darslarni bepul oling:

WHERE NomenklaturaGroup= &NomenklaturaGroup

Atribut turiga shart qo'yish mumkin, agar u kompozit turga tegishli bo'lsa:

Agar siz qiymatlar ro'yxati yoki massivdan tanlashni cheklashingiz kerak bo'lsa, quyidagilarni qilishingiz mumkin:

Jamg'arma reestri QAYERDA. Registrator B (&Tanlash uchun hujjatlar ro'yxati)

Vaziyat, shuningdek, bir nechta shartlardan iborat murakkab bo'lishi mumkin:

QAYERDA Qabul qilingan sana > DATETIME(2012,01,01) VA NomenklaturaGroup= &NomenklaturaGuruhi VA EMAS xizmat

GROUP BY

Natijani guruhlash uchun ishlatiladigan 1C 8.2 so'rovlar tilini loyihalash.

Masalan:

TANLANG
Tovar va xizmatlarni qabul qilish Tovarlar.
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Quantity) AS Miqdori,
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Summa) AS summa
FROM
Hujjat.Tovar va xizmatlarni qabul qilish.Tovarlar QANDAY Tovar va xizmatlarni qabul qilish Tovarlar

GROUP BY
Tovarlarni qabul qilishXizmatlarTovarlar.Tovarlar

Ushbu so'rovda barcha tushumlar miqdori va miqdori bo'yicha jamlanadi.

Kalit so'zdan tashqari SUM Boshqa agregat funktsiyalardan foydalanishingiz mumkin: QUANTITY, TURLI SONI, MAKSIMUM, ENG KAM, OʻRTA.

EGA

Ko'pincha unutilgan dizayn, lekin bu juda muhim va foydali. Bu tanlovni yig'ish funksiyasi ko'rinishida belgilash imkonini beradi, bu dizaynda amalga oshirilmaydi QAYERDA.

1C so'rovida HAVING dan foydalanishga misol:

TANLANG
Tovar va xizmatlarni qabul qilish Tovarlar.
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Quantity) AS Miqdori,
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Summa) AS summa
FROM
Hujjat.Tovar va xizmatlarni qabul qilish.Tovarlar QANDAY Tovar va xizmatlarni qabul qilish Tovarlar

GROUP BY
Tovar va xizmatlarni qabul qilish Tovarlar

SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Miqdori) > 5

Shunday qilib, biz 5 donadan ortiq kelgan mahsulotlar sonini tanlaymiz.

MA'NOSI()

Masalan:

WHERE Bank = Qiymat(Directory.Banks.EmptyLink)

WHERE Nomenklatura turi = Qiymat(Katalog.Nomenklatura turlari.Mahsulot)

WHERE Element turi = Qiymat (Ro'yxatga olish.Item turlari.Xizmat)

TYPE so‘rovda

Ma'lumotlar turini TYPE() va VALUETYPE() funksiyalari yoki mantiqiy REFERENCE operatori yordamida tekshirish mumkin.

EXPRESS()

1C so'rovlarida Express operatori ma'lumotlar turlarini aylantirish uchun ishlatiladi.

Sintaksis: EXPRESS(<Выражение>QANAQASIGA<Тип значения>)

Undan foydalanib, siz satr qiymatlarini sanaga yoki mos yozuvlar qiymatlarini satr ma'lumotlariga va hokazolarga o'zgartirishingiz mumkin.

Amaliy ilovalarda cheksiz uzunlikdagi maydonlarni konvertatsiya qilish uchun Express() operatori juda tez-tez ishlatiladi, chunki cheksiz uzunlikdagi maydonlarni tanlash, guruhlash va h.k. mumkin emas. Agar bunday maydonlar o'zgartirilmasa, siz xato olasiz Siz cheksiz uzunlikdagi maydonlarni va mos kelmaydigan turdagi maydonlarni taqqoslay olmaysiz.

TANLANG
Aloqa ma'lumotlari.Ob'ekt,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
FROM
Axborot reestri Aloqa ma'lumotlari QANDAY Aloqa ma'lumotlari

GROUP BY
EXPRESS(ContactInfo.Representation AS ROW(150)),
Aloqa ma'lumotlari.Object

ISNULL (ISNULL)

Yozuvdagi qiymatni va agar u teng bo'lsa, tekshiradigan 1C so'rovlar tilining juda foydali funktsiyasi NULL, Bu sizga o'zingizning qiymatingiz bilan almashtirish imkonini beradi. Ko'pincha yashirish uchun balanslar va aylanmalarning virtual jadvallarini olishda foydalaniladi NULL va aniq 0 (nol) qo'ying.

ISNULL(Oydan oldingi soliqlar. AppliedFSS imtiyozi, 0)

ISNULL 1C so'rov tilining bunday funktsiyasi, agar qiymat bo'lmasa, nolni qaytaradi, bu xatolikdan qochadi.

QO'SHILING

Ulanishning 4 turi mavjud: CHAP, TO'G'RI, TO'LIQ, ICHKI.

CHAP va O'NG BOG'LANISH

Birlashmalar ma'lum bir shartga asoslangan ikkita jadvalni bog'lash uchun ishlatiladi. Xususiyat qachon CHAPGA QO'SHILING birinchi ko'rsatilgan jadvalni to'liq qabul qilamiz va ikkinchi jadvalni shartli ravishda bog'laymiz. Ikkinchi jadvalning shart bilan bog'lab bo'lmaydigan maydonlari qiymat bilan to'ldiriladi NULL.

1C so'rovida chap qo'shilish misoli:

U butun jadvalni qaytaradi va "Bank" maydonini faqat "Counterparties.Name = Banks.Name" sharti bajarilgan joylarda to'ldiradi. Agar shart bajarilmasa, Bank maydoni o'rnatiladi NULL.

1C 8.3 tilida RIGHT JOIN mutlaqo o'xshash LEFT ulanish, bitta farq bundan mustasno: ichida ULANISH HUQUQI"Asosiy" jadval birinchi emas, ikkinchisi.

TO'LIQ ULANISH

TO'LIQ ULANISH chap va o'ngdan farq qiladi, chunki u ikkita jadvaldagi barcha yozuvlarni ko'rsatadi va faqat shart bo'yicha ulanishi mumkin bo'lganlarni bog'laydi.

Masalan:

TO'LIQ ULANISH
Katalog.Banklar QANDAY Banklar

BY

So'rovlar tili ikkala jadvalni ham to'liq qaytaradi, agar yozuvlarni qo'shish sharti bajarilsa. Chap/o'ng qo'shilishdan farqli o'laroq, NULL ikkita maydonda paydo bo'lishi mumkin.

ICHKI QO‘SHILMA

ICHKI QO‘SHILMA to'liqdan farq qiladi, chunki u faqat berilgan shartga muvofiq ulanishi mumkin bo'lgan yozuvlarni ko'rsatadi.

Masalan:

FROM
Ma'lumotnoma kontragentlar AS mijozlari

ICHKI QO‘SHILMA
Katalog.Banklar QANDAY Banklar

BY
Clients.Name = Banks.Name

Bu so'rov faqat bank va kontragent bir xil nomga ega bo'lgan qatorlarni qaytaradi.

Xulosa

Bu 1C 8 so'rovlar tilidagi sintaksisning faqat kichik bir qismi, kelajakda men ba'zi fikrlarni batafsil ko'rib chiqishga, ko'rsatishga va yana ko'p narsalarni qilishga harakat qilaman!

NULL- etishmayotgan qiymatlar.
Nol qiymat bilan adashtirmaslik kerak! NULL raqam emas, bo'sh joy, bo'sh havola yoki Aniqlanmaganga teng emas.

NULL - turni shakllantiruvchi qiymat, ya'ni. NULL turi va bu turdagi bitta qiymat mavjud.

NULL qiymatlar quyidagi holatlarda so'rovda paydo bo'ladi:
a) Boshqa jadvalda tegishli yozuv topilmagan tashqi birlashma (chap bilan - ikkinchi jadvalda, o'ngda - birinchisida, to'liq bilan - ikkalasida)
b) Guruh uchun elementlarning tafsilotlariga kirish va aksincha.
c) tanlash maydonlari ro'yxatida NULL (SELECT)
d) Buzilgan havola tafsilotlariga kirish

IS NULL SELECT operatorida ishlatiladi (qiymatning bo'shligini tekshirish kabi (Qiymat IS NULL)):
Kod 1C v 8.x
TANLOV
QAChON QIYMAT NULL BO'LSA, SO'NG ResultIfNULL
ALSE Ma'nosi
OXIRI

boshqa misol:
Kod 1C v 8.x SELECT

Buxgalteriya ob'ektlari Qolgan QAChON TANLOV. Qolgan miqdor NULL BO'LSA KEYIN 0
BOSHQA QOLDA Qolgan nomenklaturani hisobga olish Qolgan miqdor Qolgan miqdor sifatida
FROM



QAYERDA

Funktsiya ISNULL(qiymat, ResultIfNULL) agar u NULL bo'lmasa, birinchi parametrning qiymatini, aks holda ikkinchi parametrning qiymatini qaytaradi
SELECT...END yopildi, lekin ISNULL afzalroq.
Kod 1C v 8.x
TANLANG
ISNULL(Katalog.Nomenklatura.Maqola, "---") AS Maqola,
Katalog.Nomenklatura.Taqdimot AS Nomenklatura

boshqa misol:
Kod 1C v 8.x
TANLANG
Nomenklatura ma'lumotnomasi.
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS QuantityRemaining
FROM
Katalog.Nomenklatura AS KatalogNomenklaturalar
CHAP BOG'LANISh Jamg'armalarni ro'yxatdan o'tkazish. Buxgalteriya ob'ektlari. Balanslar AS Buxgalteriya balanslari.
Software Item AccountingRemains.Nomenklatura = Nomenklatura Directory.Link
QAYERDA
Nomenklatura katalogi.ThisGroup = FALSE
Ushbu misolda ob'ektlar katalogining barcha elementlari olinadi, shundan so'ng har bir element uchun jamg'arma registridan joriy qoldiqlar olinadi. Chunki Balans mavjud bo'lmagan element uchun virtual balanslar jadvali yozuvni qaytarmaydi, keyin "Buxgalteriya hisobi. Qolgan miqdor" maydoniga ulanish natijasida mavjud bo'lgan element uchun NULL qiymatlari bo'ladi. balanslari yo'q edi. NULL qiymati o'rniga so'rov natijasi 0 qiymatiga ega bo'lishini ta'minlash uchun biz kerakli almashtirishni amalga oshiradigan ISNULL() funktsiyasidan foydalandik.

ISNULL quyidagi sabablarga ko'ra CHOICE dan farq qiladi:
a) ISNULL bo'lsa, so'rovni yaxshiroq o'qish mumkin (oddiyroq)
b) ISNULL bo'lsa, agar murakkab ifoda belgilansa, u bir marta hisoblangani uchun tezroq ishlaydi
c) Agar ISNULL bo'lsa, almashtirish ifodasi, agar u String (uzunlik) yoki Number (bit chuqurligi) turi bo'lsa, tekshirilayotgan ifoda turiga aylantiriladi.

Oddiy tenglikdan foydalanib, siz NULL qiymatlarini tekshira olmaysiz, chunki SQL uchta qiymatli mantiqdan foydalanadi - True, False, NULL va bunday taqqoslash natijasi noma'lum bo'ladi, bu 1C 8.0 da FALSE ga o'xshaydi.
NULL<>0, shuning uchun chap tashqi birikmalar uchun qarang. Balanslar, narxlar jadvallari bilan nomenklatura, o'zaro hisob-kitoblarga ega kontragentlar, bunday yozuvlar bo'lmasa, 0 ga teng bo'lmagan NULL bo'ladi. Eng yaxshi yechim - ISNULL.

Diqqat! Bu darsning kirish versiyasi bo'lib, uning materiallari to'liq bo'lmasligi mumkin.

Saytga talaba sifatida kiring

Maktab materiallariga kirish uchun talaba sifatida tizimga kiring

Yangi boshlanuvchi dasturchilar uchun so'rovlar tili 1C 8.3: turlar bilan ishlash funktsiyalari va operatorlari (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Katalog, hujjat yoki boshqa amaliy ob'ektning har bir atributi (xususiyati, maydoni) o'z turiga ega ekanligini eslaylik. Va biz ushbu turni konfiguratorda ko'rishimiz mumkin:

So'rovlar tilida detallar turlari bilan ishlash uchun funktsiyalar va operatorlarning butun sinfi mavjud. Keling, ularga qaraylik.

VALUE TYPE funksiyasi

Bu funksiya bitta parametr (qiymat) oladi va uning turini qaytaradi. Rasmda tasvirlangan rekvizitlar uchun (yuqorida) Ta'mi katalog Ovqat quyidagilar qaytariladi:

Endi rekvizitlarni ko'rib chiqaylik O'ziga xos xususiyat katalogda Shaharlar:

Ko'ryapsizmi, bu tayanch bir nechta turlardan biri bo'lishi mumkin: Chiziq, Katalog. Ta'mlar, Katalog. Ranglar. Bu turdagi detallar KOMPOZIT deyiladi.

Agar biz 1C: Enterprise rejimida bunday tafsilotning qiymatini to'ldirishga harakat qilsak, tizim bizdan qaysi turdagi qiymat kiritilishini so'raydi:

Va faqat bizning tanlovimizdan so'ng u tanlangan turning qiymatini kiritishimizga imkon beradi.

Shunday qilib, bir xil turdagi katalog elementlari ( Katalog. Shaharlar) bir xil atributda saqlashi mumkin bo'ladi ( O'ziga xos xususiyat) har xil turdagi qiymatlar (String, Colors yoki Flavors).

Buni katalog elementlarini bosish orqali o'zingiz ko'rishingiz mumkin Shaharlar 1C: Korxona rejimida. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud.

Bu erda farqlovchi xususiyat qiymati katalog elementidir Lazzatlar:

Bu qator:

Va bu erda odatda ma'lumotnomaning elementi Ranglar:

Bular kompozit ma'lumotlar turi biz uchun ochadigan imkoniyatlardir!

Funktsiya qanday ishlashiga hayronman QIMMATLAR TURI rekvizitlarda Distinctive element, kompozit ma'lumotlar turiga ega:

Bu allaqachon juda qiziq. Keling, har bir qatorni alohida ko'rib chiqaylik.

Rossiya elementi uchun o'ziga xos xususiyatning qiymati turi tengdir NULL. Bu turga birinchi marta duch keldik. Ushbu turdagi qiymatlar faqat ma'lumotlar bazasi bilan ishlashda etishmayotgan qiymatni aniqlash uchun ishlatiladi.

Bu to'g'ri, chunki Rossiya elementi oddiy katalog elementi emas, balki guruhdir Shaharlar, shuning uchun uning maydoni yo'q O'ziga xos xususiyat. Va etishmayotgan qiymatning turi, yuqorida o'qiganimizdek, har doim tengdir NULL.

Perm uchun o'ziga xos xususiyatning qiymati turi tengdir Lazzatlar. Bu to'g'ri, chunki Perm shahri uchun ma'lumotlar bazasiga kiritilgan o'ziga xos xususiyatning qiymati katalog elementiga havoladir. Lazzatlar.

Krasnoyarsk uchun atributning turi tengdir Ranglar, chunki ma'lumotlar bazasida tanlangan qiymat katalog elementiga havoladir Ranglar.

Voronej uchun atributning turi tengdir Chiziq, chunki ma'lumotlar bazasiga kiritilgan qiymat oddiy satrdir.

Hindiston yana bir guruh, shuning uchun hech qanday ahamiyatga ega emas. Va etishmayotgan qiymatning turi, biz eslaganimizdek, tengdir NULL.

Gap shundaki. Agar siz katalog elementiga kirsangiz Shaharlar nomi bilan San-Paulu, keyin siz maydonni ko'rasiz O'ziga xos xususiyat umuman to'ldirilmagan. Bo‘sh. A kompozit turdagi barcha bo'sh maydonlar alohida ma'noga ega Aniqlanmagan.

BILAN TA'RILMAGAN biz ham birinchi marta duch kelyapmiz. Ma'nosi TA'RILMAGAN boshqa turga mansub bo'lmagan bo'sh qiymatdan foydalanish zarur bo'lganda ishlatiladi. Aynan shu holat bizda. Va qiymat turi TA'RILMAGAN, ehtimol siz allaqachon taxmin qilganingizdek, tengdir NULL.

Funktsiya TYPE

Bu faqat bitta parametrni oladi - ibtidoiy turning nomi ( LINE, NUMBER, DATE, BUL) yoki havola turini olmoqchi bo'lgan jadval nomi.

Ushbu konstruktsiyaning natijasi ko'rsatilgan tur uchun Type tipidagi qiymat bo'ladi.

Noaniq eshitiladi, shunday emasmi?

Keling, ushbu dizaynning qo'llanilishini ko'rib chiqaylik va hamma narsa darhol joyiga tushadi.

Biz barcha katalog yozuvlarini tanlashimiz kerak deylik Shaharlar, ular kompozit rekvizitlarga ega O'ziga xos xususiyat turi qiymatiga ega LINE:

Endi atribut qiymatlari bo'lgan barcha yozuvlarni tanlaymiz O'ziga xos xususiyat katalog elementlariga havolalardir Ranglar(jadval Katalog. Ranglar):

Chekinish

Esingizda bo'lsa, katalogning ba'zi elementlari Shaharlar rekvizitlari yo'q O'ziga xos xususiyat. Funktsiya QIMMATLAR TURI u ishlab chiqaradigan bunday elementlar uchun NULL.

So'rovda bunday elementlarni qanday tanlash mumkin? Buning uchun maxsus mantiqiy operator taqdim etiladi IS NULL(funksiya bilan adashtirmaslik kerak ISNULL, biz quyida ko'rib chiqamiz). Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud.

Quyida undan foydalanish misoli keltirilgan:

Ajoyib. Lekin siz San-Pauluning elementi yo'qligini payqadingizmi, rekvizitlar qiymati turi O'ziga xos xususiyat uni ham berdi NULL. Nima uchun bu sodir bo'ldi?

Ammo gap shundaki, tafsilotlarni to'ldirish uchun guruhlar (Rossiya, Hindiston, Braziliya) uchun vaziyat O'ziga xos xususiyat printsipial jihatdan imkonsiz, chunki ularda umuman yo'q, San-Paulu elementi uchun vaziyatdan farq qiladi, ular uchun rekvizitlarni to'ldirish mumkin, lekin u shunchaki to'ldirilmaydi va biz eslaganimizdek, maxsus qiymat TA'RILMAGAN.

Zarur bo'lgan barcha yozuvlarni tanlash uchun O'ziga xos xususiyat mavjud, lekin to'ldirilmagan, boshqa konstruktsiyadan foydalanish kerak:

Ammo bo'sh (to'ldirilmagan) atributlarni aniqlash uchun UNDEFINED bilan taqqoslash faqat kompozit turlar uchun ishlaydi.

Aytgancha, IS NULL mantiqiy operatori quyidagi ko'rinishdagi inkor shakliga ega:

Mantiqiy operator LINK

Masalan, katalogdan tanlaymiz Shaharlar faqat kompozit atribut qiymatiga ega bo'lgan yozuvlar O'ziga xos xususiyat katalog elementiga havoladir Lazzatlar:

Esingizda bo'lsa, biz xuddi shu muammoni hal qilishimiz mumkin QIMMATLAR TURI Va TYPE:

ISNULL funktsiyasi

Funktsiya qiymatni almashtirish uchun mo'ljallangan NULL boshqa ma'noga.

Buning ma'nosini eslaymiz NULL so'ralgan atribut (maydon, xususiyat) mavjud bo'lmasa qaytariladi.

Masalan, rekvizitlar O'ziga xos xususiyat katalog guruhlari uchun Shaharlar:

Funktsiya ISNULL ga teng bo'lsa, boshqa qiymat chiqarishimizga yordam beradi NULL. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud. Bu holda "Bunday tayanch yo'q!" qatori bo'lsin:

Ma'lum bo'lishicha, agar funktsiyaning birinchi parametri ISNULL teng emas NULL, keyin u qaytib keladi. Agar u NULL bo'lsa, ikkinchi parametr qaytariladi.

EXPRESS funksiyasi

Bu funksiya faqat kompozit turga ega bo'lgan maydonlar uchun. Bunday maydonning ajoyib namunasi mulkdir O'ziga xos xususiyat katalog elementlari uchun Shaharlar.

Esda tutganimizdek, kompozit maydonlar konfiguratorda ko'rsatilgan bir nechta turlardan biri bo'lishi mumkin.

Maydon uchun O'ziga xos xususiyat shunday to'g'ri turlari bor LINE, Katalog. Ranglar Va Katalog. Ta'mlar.

Ba'zida kompozit maydonning qiymatlarini ma'lum bir turga o'tkazish kerak bo'ladi.

Keling, barcha maydon qiymatlarini sanab o'tamiz O'ziga xos xususiyat yozish Malumot. Ranglar:

Natijada, turdagi barcha element qiymatlari Katalog. Ranglar, to'ldirilgan holda qoldi va belgilangan turga aylantirildi. Boshqa turdagi barcha qiymatlar ( LINE, Katalog. Ta'mlar) endi teng NULL. Bu funktsiyadan foydalangan holda turdagi quyishning o'ziga xos xususiyati EXPRESS.

Siz turni ibtidoiy turga o'tkazishingiz mumkin ( BUL, NUMBER, LINE, DATE) yoki mos yozuvlar turiga. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud. Ammo quyma amalga oshirilayotgan tur ushbu kompozit maydon uchun turlar ro'yxatiga kiritilishi kerak, aks holda tizim xatoga yo'l qo'yadi.

Sinovdan o'ting

Sinovni boshlang

1. Eng to‘g‘ri gapni tanlang

2. Bir nechta turlardan birining qiymatlarini qabul qila oladigan detallar deyiladi

3. Atribut qiymatining turini aniqlash uchun funksiyadan foydalaning

4. Kompozit tipdagi bo'sh detallar muhim ahamiyatga ega



 


O'qing:



Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar

Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar

A va B to'plamlar orasidagi G moslik kichik to'plam deyiladi. Agar bo'lsa, b a ga mos keladi, deyiladi. Ko'p tegishli barcha ...

Axborot tizimi nima?

Axborot tizimi nima?

Davlat portallari, ESIA veb-saytlari. Yagona identifikatsiya va autentifikatsiya tizimi - esia.gosuslugi.ru EPGU. Yagona davlat xizmatlari portali...

Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha

Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha

Laboratoriya ishi No 4. Mantiqiy elementlarning sxema bo'yicha amalga oshirilishi. Mantiqiy sxemalarni qurish. Nazariy qism. Qayta ishlash asosida...

Nijniy Novgorod rus pochtasining sharmandaligi

Nijniy Novgorod rus pochtasining sharmandaligi

Qiymati 890 million rubl boʻlgan yangi EAS OPS operatsion tizimi joriy etilgandan soʻng, mintaqadagi pochta boʻlimlarida mijozlarga xizmat koʻrsatish vaqti...

tasma tasviri RSS