Wartości null (jest null i jest null()). Korzystanie z funkcji isnull() Różnice pomiędzy funkcją isnull() i isnull

💖 Podoba Ci się? Udostępnij link swoim znajomym

W procesie opracowywania raportów na temat SKD w 1C Enterprise często pojawia się zadanie wyświetlania zer w pustych polach raportów. Faktem jest, że jeśli w bazie danych nie ma potrzebnych danych, zapytanie nie zwraca liczby 0, ale specjalną wartość NULL, którą następnie należy przekonwertować na liczbę. Na przykład, jeśli piszemy

a rejestr informacyjny jest pusty, wówczas wynikiem zapytania w polu „Cena” będzie wartość NULL. A jeśli zgodnie z warunkami zadania musimy wyświetlić w raporcie zera, to musimy skomponować zapytanie w następujący sposób:

Masz pytanie lub potrzebujesz pomocy konsultanta?

Wyobraźmy sobie jednak, że w systemie kontroli dostępu korzystamy z połączenia 2 zbiorów danych, a wynik jednego z nich okazuje się pusty. W tym przypadku konstrukcja ISNULL w tekście żądania tego zestawu nie pomoże nam, ponieważ zwróci pusty wybór. Nie będzie wartości NULL, które można przekonwertować na 0, w ogóle nic tam nie będzie. NULL pojawia się dopiero po połączeniu zbiorów danych i za to odpowiada układ układu. Pozostałym rozwiązaniem jest użycie pól obliczeniowych. W naszym przykładzie będziemy musieli utworzyć pole obliczeniowe „Cena” i wprowadzić do jego wyrażenia wyrażenie ISNULL(Cena,0). Do czasu uruchomienia wyrażeń pola obliczeniowego zapytania są już połączone, zatem będziemy mieli już pole „Cena” zawierające wartość NULL. Tworząc pole obliczeniowe o tej samej nazwie, zasadniczo nadpisujemy pole, które zwróciły nam zestawy danych.

Język zapytań 1C jest jedną z głównych różnic między wersjami 7.7 i 8. Jednym z najważniejszych punktów w nauce programowania 1C jest język zapytań. W 1C 8.3 zapytania są najpotężniejszym i najskuteczniejszym narzędziem do uzyskiwania danych. Język zapytań pozwala w wygodny sposób pozyskać informacje z bazy danych.

Sama składnia bardzo przypomina klasyczny T-SQL, z tą różnicą, że w 1C, używając języka zapytań, dane można odbierać tylko za pomocą konstrukcji Select. Język obsługuje również bardziej złożone konstrukcje, na przykład (żądanie w żądaniu). Zapytania w 1C 8 można pisać zarówno cyrylicą, jak i łaciną.

W tym artykule postaram się omówić główne słowa kluczowe w języku zapytań 1C:

  • wybierać
  • dozwolony
  • różny
  • wyrazić
  • Pierwszy
  • na zmianę
  • oznaczający
  • typ wartości (i operator REFERENCE)
  • wybór
  • Grupuj według
  • mający
  • ISNULL
  • Tak NULL
  • przyłącza - prawe, lewe, wewnętrzne, pełne.

A także kilka małych sztuczek języka 1C, za pomocą których można optymalnie skonstruować tekst żądania.

Do debugowania zapytań w systemie 1C 8.2 dostępne jest specjalne narzędzie - konsola zapytań. Możesz zobaczyć opis i pobrać go za pomocą linku -.

Przyjrzyjmy się najważniejszym i interesującym operatorom języka zapytań 1C.

WYBIERAĆ

W języku zapytań 1C Enterprise 8 każde zapytanie zaczyna się od słowa kluczowego WYBIERAĆ. W języku 1C nie ma konstrukcji AKTUALIZUJ, USUŃ, UTWÓRZ TABELĘ, WSTAW, te manipulacje są wykonywane w technologii obiektowej. Jego celem jest wyłącznie odczyt danych.

Na przykład:

WYBIERAĆ
Bieżący katalog.Nazwa
Z
Katalog.Nomenklatura AS Katalog bieżący

Zapytanie zwróci tabelę z nazwami elementów.

W pobliżu konstrukcji WYBIERAĆ możesz znaleźć słowa kluczowe DLA ZMIANY, DOZWOLONY, RÓŻNY, PIERWSZY

DOZWOLONY— wybiera z tabeli tylko rekordy, do których ma uprawnienia bieżący użytkownik.

RÓŻNY— oznacza, że ​​wynik nie będzie zawierał zduplikowanych linii.

WYBÓR (przypadek)

Bardzo często ten projekt jest niedoceniany przez programistów. Przykład jego użycia:

Bieżący katalog.Nazwa,

KIEDY bieżący katalog.usługa WTEDY

"Praca"

KONIEC JAK PRZEGLĄDAĆNomenklatura

Katalog.Nomenklatura AS Katalog bieżący

Przykład zwróci wartość tekstową w polu „Typ artykułu” - „Produkt” lub „Usługa”.

GDZIE

Projekt języka zapytań 1C, który pozwala narzucić selekcję otrzymanym danym. Należy pamiętać, że system odbiera wszystkie dane z serwera i dopiero wtedy są one wybierane na podstawie tego parametru.

WYBIERAĆ
Katalog.Nazwa
Z
Katalog bieżący. Nomenklatura AS Katalog bieżący
GDZIE CurrentDirectory.Service = TRUE

W przykładzie wybieramy rekordy, dla których wartość atrybutu „Service” jest ustawiona na „True”. W tym przykładzie moglibyśmy spełnić następujący warunek:

„GDZIE JEST SERWIS”

Zasadniczo wybieramy wiersze, w których wyrażenie znajdujące się po słowie kluczowym ma wartość „True”.

W wyrażeniach możesz używać warunków bezpośrednich:

GDZIE Kod = „005215”

Używając operatora „VALUE()” w warunkach, korzystaj z dostępu do predefiniowanych elementów i wyliczeń w żądaniu 1C:

GDZIE Typ elementu = Wartość (Wyliczenie. Typy pozycji. Produkt)

Wartości czasu można określić w następujący sposób:

WHERE Data otrzymania > DATETIME(2012,01,01):

Najczęściej warunki określane są jako parametry przekazywane do żądania:

Uzyskaj 267 lekcji wideo na 1C za darmo:

WHERE Grupa Nomenklatury= &Grupa Nomenklatury

Na typ atrybutu można nałożyć warunek, jeśli jest on typu złożonego:

Jeśli chcesz ograniczyć wybór z listy wartości lub tablicy, możesz wykonać następujące czynności:

GDZIE jest Rejestr Akumulacji B (&Lista dokumentów do wyboru)

Warunek może być również złożony i składać się z kilku warunków:

WHERE Data odbioru > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup ORAZ NIE Usługa

GRUPUJ WEDŁUG

Projekt języka zapytań 1C 8.2 używanego do grupowania wyniku.

Na przykład:

WYBIERAĆ
Odbiór Towarów i Usług Towarowych,
SUMA (odbiór towarów, usług, towarów. ilość) AS Ilość,
SUMA(Odbiór towarówUsługiDobra.Kwota) JAKO Kwota
Z
Dokument Odbiór Towarów i Usług. Towar JAK Odbiór Towarów i Usług

GRUPUJ WEDŁUG
Odbiór towarówUsługiTowary.Towary

To żądanie podsumowuje wszystkie wpływy według kwoty i ilości według pozycji.

Oprócz słowa kluczowego SUMA Możesz użyć innych funkcji agregujących: ILOŚĆ, ILOŚĆ RÓŻNYCH, MAKSYMALNY, MINIMUM, PRZECIĘTNY.

MAJĄCY

Projekt, o którym często się zapomina, a jest bardzo ważny i przydatny. Pozwala określić selekcję w postaci funkcji agregującej, nie da się tego zrobić w projekcie GDZIE.

Przykład użycia HAVING w żądaniu 1C:

WYBIERAĆ
Odbiór Towarów i Usług Towarowych,
SUMA (odbiór towarów, usług, towarów. ilość) AS Ilość,
SUMA(Odbiór towarówUsługiDobra.Kwota) JAKO Kwota
Z
Dokument Odbiór Towarów i Usług. Towar JAK Odbiór Towarów i Usług

GRUPUJ WEDŁUG
Odbiór towarów i usług Towary

SUMA(Odbiór towarówUsługiTowary.Ilość) > 5

Wybierzemy więc liczbę produktów, które przybyły w ilości większej niż 5 sztuk.

OZNACZAJĄCY()

Na przykład:

GDZIE Bank = Wartość(Directory.Banks.EmptyLink)

GDZIE Typ nomenklatury = Wartość(Katalog.Typy nomenklatury.Produkt)

GDZIE Typ elementu = Wartość (Wyliczenie. Typy pozycji. Usługa)

TYP w żądaniu

Typ danych można sprawdzić za pomocą funkcji TYPE() i VALUETYPE() lub za pomocą operatora logicznego REFERENCE.

WYRAZIĆ()

Operator Express w zapytaniach 1C służy do konwersji typów danych.

Składnia: WYRAZIĆ(<Выражение>JAK<Тип значения>)

Za jego pomocą możesz konwertować wartości ciągów na datę lub wartości referencyjne na dane ciągów i tak dalej.

W praktycznych zastosowaniach operator Express() jest bardzo często używany do konwersji pól o nieograniczonej długości, ponieważ pól o nieograniczonej długości nie można wybierać, grupować itp. Jeśli takie pola nie zostaną przekonwertowane, pojawi się błąd Nie można porównywać pól o nieograniczonej długości z polami niekompatybilnych typów.

WYBIERAĆ
Informacje kontaktowe.Obiekt,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
Z
Rejestr informacji Informacje kontaktowe JAK Informacje kontaktowe

GRUPUJ WEDŁUG
EXPRESS(ContactInfo.Representation AS ROW(150)),
Informacje kontaktowe.Obiekt

ISNULL (ISNULL)

Całkiem przydatna funkcja języka zapytań 1C, która sprawdza wartość w rekordzie i czy jest równa ZERO, Dzięki temu możesz zastąpić go własną wartością. Najczęściej stosowane przy uzyskiwaniu wirtualnych tabel sald i obrotów w celu ukrycia ZERO i wstaw wyraźne 0 (zero).

ISNULL(Podatki za miesiąc. Zastosowane świadczenie FSS, 0)

Taka funkcja języka zapytań 1C ISNULL zwróci zero, jeśli nie ma wartości, co pozwoli uniknąć błędu.

DOŁĄCZYĆ

Istnieją 4 rodzaje połączeń: LEWY, PRAWIDŁOWY, KOMPLETNY, WEWNĘTRZNY.

POŁĄCZENIE LEWE i PRAWE

Złączenia służą do łączenia dwóch tabel na podstawie określonego warunku. Funkcja kiedy LEWO DOŁĄCZ polega na tym, że bierzemy w całości pierwszą określoną tabelę i warunkowo wiążemy drugą tabelę. Pola drugiej tabeli, których nie można było obwiązać warunkiem, są wypełniane wartością ZERO.

Przykład lewego połączenia w żądaniu 1C:

Zwróci całą tabelę i wypełni pole „Bank” tylko w tych miejscach, w których spełniony jest warunek „Kontrahenci.Nazwa = Banki.Nazwa”. Jeżeli warunek nie jest spełniony, pole Bank zostanie ustawione na wartość ZERO.

PRAWY DOŁĄCZ w języku 1C 8.3 absolutnie podobne LEWE połączenie, z jedną różnicą: w PRAWO POŁĄCZENIA Tabela „główna” jest drugą, a nie pierwszą.

PEŁNE POŁĄCZENIE

PEŁNE POŁĄCZENIE różni się od lewej i prawej tym, że wyświetla wszystkie rekordy z dwóch tabel i łączy tylko te, które może połączyć według warunku.

Na przykład:

PEŁNE POŁĄCZENIE
Katalog.Banki JAK Banki

PRZEZ

Język zapytań zwróci całkowicie obie tabele tylko wtedy, gdy spełniony zostanie warunek Połącz rekordy. W przeciwieństwie do złączenia lewego/prawego, wartość NULL może pojawić się w dwóch polach.

WEWNĘTRZNE POŁĄCZENIE

WEWNĘTRZNE POŁĄCZENIE różni się od pełnego tym, że wyświetla tylko te rekordy, które można połączyć według zadanego warunku.

Na przykład:

Z
Katalog Kontrahentów AS Klienci

WEWNĘTRZNE POŁĄCZENIE
Katalog.Banki JAK Banki

PRZEZ
Klienci.Nazwa = Banki.Nazwa

To zapytanie zwróci tylko wiersze, w których bank i kontrahent mają tę samą nazwę.

Wniosek

To tylko niewielka część składni języka zapytań 1C 8; w przyszłości postaram się rozważyć niektóre punkty bardziej szczegółowo, pokazać i wiele więcej!

ZERO- brakujące wartości.
Nie mylić z wartością zerową! NULL nie jest liczbą, nie jest równoznaczny ze spacją, pustym odwołaniem lub niezdefiniowanym.

NULL jest wartością tworzącą typ, tj. istnieje typ NULL i pojedyncza wartość tego typu.

Wartości NULL pojawiają się w zapytaniu w następujących sytuacjach:
a) Złączenie zewnętrzne, w którym nie znaleziono odpowiadającego mu rekordu w innej tabeli (z lewym – w drugiej tabeli, z prawym – w pierwszej, z pełnym – w obu)
b) Dostęp do szczegółów elementów grupy i odwrotnie.
c) NULL na liście pól wyboru (SELECT)
d) Dostęp do szczegółów uszkodzonego łącza

JEST NULL użyte w operatorze SELECT (jak przy sprawdzaniu, czy wartość jest pusta (Wartość JEST NULL)):
Kod 1C wersja 8.x
WYBÓR
JEŚLI wartość JEST NULL, TO ResultIfNULL
INACZEJ Znaczenie
KONIEC

inny przykład:
Kod 1C v 8.x WYBIERZ

WYBÓR, KIEDY POZOSTAŁE ELEMENTY księgowe. Pozostała ilość ma wartość NULL WTEDY 0
W przeciwnym razie księgowanie pozostałej ilości jako ilości pozostałej
Z



GDZIE

Funkcjonować ISNULL(wartość, wynikJeśliNULL) zwraca wartość pierwszego parametru, jeśli nie jest równa NULL, lub wartość drugiego parametru w przeciwnym razie
Jest zwinięty SELECT...END, ale preferowany jest ISNULL.
Kod 1C wersja 8.x
WYBIERAĆ
ISNULL(Directory.Nomenclature.Article, "---") AS Artykuł,
Katalog.Nomenklatura.Prezentacja Nomenklatura AS

inny przykład:
Kod 1C wersja 8.x
WYBIERAĆ
Katalog nomenklatury,
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS Ilość pozostała
Z
Katalog.Nomenklatura AS KatalogNomenklatury
POŁĄCZENIE LEWE Rejestracja akumulacji Salda pozycji księgowych jako salda księgowe pozycji
Software Item AccountingRemains.Nomenclature = Nomenclature Directory.Link
GDZIE
Katalog nomenklatury.ThisGroup = FALSE
W tym przykładzie pobierane są wszystkie elementy katalogu pozycji, po czym dla każdej pozycji pobierane są aktualne salda z rejestru akumulacji. Ponieważ dla towaru, dla którego nie ma sald, wirtualna tabela sald nie zwróci rekordu, wówczas w wyniku połączenia w polu „Item AccountingRemaining.QuantityRemaining” pojawią się wartości NULL dla towaru, dla którego nie ma nie było sald. Aby mieć pewność, że zamiast wartości NULL wynik żądania będzie zawierał wartość 0, użyliśmy funkcji ISNULL(), która przeprowadzi żądaną zamianę.

ISNULL różni się od CHOICE z następujących powodów:
a) Jeśli ISNULL, zapytanie jest lepiej czytelne (prostsze)
b) Jeśli ISNULL, jeśli zaznaczone jest wyrażenie złożone, działa ono szybciej, ponieważ jest obliczane raz
c) Jeśli ISNULL, wyrażenie zastępcze jest konwertowane na typ testowanego wyrażenia, jeśli jest typu String (długość) lub Number (głębia bitowa).

Nie można sprawdzić wartości NULL przy użyciu zwykłej równości, ponieważ SQL używa logiki trójwartościowej - Prawda, Fałsz, NULL, a wynik takiego porównania będzie NIEZNANY, co w 1C 8.0 jest podobne do FAŁSZ.
ZERO<>0, więc w przypadku lewych złączeń zewnętrznych patrz. Nomenklatura z tabelami sald, cen, Kontrahentów z wzajemnymi rozliczeniami, w przypadku braku takich zapisów będzie NULL, co nie jest równe 0. Najlepszym rozwiązaniem jest ISNULL

Podczas pracy z językiem zapytań czasami pojawia się sytuacja, gdy trzeba zastąpić wartość NULL inną wartością. Konieczność wykonania takiej operacji może zaistnieć np. w momencie otrzymania stanów magazynowych całego asortymentu. W tym artykule opisano użycie funkcji języka zapytań ISNULL() do rozwiązywania takich problemów, a także omówiono inne opcje rozwiązania.

Funkcja ISNULL

Język zapytań implementuje funkcję ISNULL(), której celem jest zastąpienie wyrażenia innym wyrażeniem, jeżeli wyrażenie to miało wartość NULL. Schemat składni tej funkcji wygląda następująco:

ISNULL(<Проверяемое выражение>, <Выражение замены>)

Ta funkcja zwróci wartość pierwszego parametru, jeśli nie ma on wartości NULL, oraz wartość drugiego wyrażenia, w przeciwnym razie.


WYBIERAĆ
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS Ilość pozostała
Z

GDZIE

W tym przykładzie pobierane są wszystkie elementy katalogu pozycji, po czym dla każdej pozycji pobierane są aktualne salda z rejestru akumulacji. Ponieważ dla towaru, dla którego nie ma sald, wirtualna tabela sald nie zwróci rekordu, wówczas w wyniku połączenia w polu „Item AccountingRemaining.QuantityRemaining” pojawią się wartości NULL dla towaru, dla którego nie ma nie było sald. Aby mieć pewność, że zamiast wartości NULL wynik żądania będzie zawierał wartość 0, użyliśmy funkcji ISNULL(), która przeprowadzi żądaną zamianę.

Korzystanie z operacji WYBIERZ

Aby rozwiązać opisany wcześniej problem, możesz skorzystać z operacji SELECT języka zapytań. Przykładowy wygląd żądania podobnego do poprzedniego mógłby wyglądać następująco:


WYBIERAĆ
Katalog nomenklatury,
WYBÓR, KIEDY POZOSTAŁE ELEMENTY księgowe. Pozostała ilość ma wartość NULL WTEDY 0
W przeciwnym razie księgowanie pozostałej ilości jako ilości pozostałej
Z
Katalog.Nomenklatura AS KatalogNomenklatury
POŁĄCZENIE LEWE Rejestracja akumulacji Salda pozycji księgowych jako salda księgowe pozycji
Software Item AccountingRemains.Nomenclature = Nomenclature Directory.Link
GDZIE
Katalog nomenklatury.ThisGroup = FALSE

Wynik tego zapytania będzie identyczny z wynikiem zapytania podanego w poprzedniej sekcji.

Korzystanie z funkcji ISNULL() jest lepsze niż użycie operacji SELECT z następujących powodów: pisanie za pomocą ISNULL() jest nieco bardziej zwarte, co zwiększa czytelność zapytania. Dodatkowo w przypadku, gdy testowane wyrażenie jest funkcją złożoną, zawierającą funkcję agregującą, obliczenie funkcji ISNULL() można wykonać szybciej niż jej odpowiednika zapisanego przy użyciu funkcji SELECT.

Funkcje funkcji ISNULL

Funkcja ISNULL(), choć jest analogią operacji SELECT ze sprawdzaniem wartości NULL, ma jednak różnicę. Różnica polega na tym, że jeśli wyrażenie funkcji jest typu łańcuchowego lub numerycznego, wyrażenie zastępcze zostanie przekonwertowane na typ testowanego wyrażenia.

Na przykład w przypadku, gdy testowane wyrażenie jest typu String(5), a wyrażenie zastępcze jest typu String(10), typ wyniku zostanie przekonwertowany na typ String(5). W rezultacie, gdy funkcja zwróci wyrażenie zastępcze, wartość zostanie obcięta do pięciu znaków.

W przypadku wyrażeń numerycznych sytuacja wygląda podobnie: wartość zastępowanego wyrażenia zostanie przekonwertowana na typ sprawdzanego, czyli: zastępowane wyrażenie może zostać obcięte. Jeśli wartości nie można przekonwertować, zapytanie nie zostanie wykonane w języku zapytań. Na przykład próba konwersji liczby 1000 na typ Number(2) zakończy się błędem.

Pracując z zapytaniami, każdy programista musi w taki czy inny sposób wchodzić w interakcję z pustymi wartościami. Co rozumiemy przez pustą wartość?

Wartość null oznacza brak wartości lub wartość domyślną dla typu danych. W przypadku typów pierwotnych wszystko jest dość proste: wartością domyślną jest wartość początkowa, która służy jako punkt wyjścia.

Typy wartości null

Przyjrzyjmy się rodzajom pustych wartości, które mogą zostać napotkane lub wymagane w zapytaniu.

  • Dla typu Number pustą wartością jest zero – 0.
  • Dla typu String – ciąg pusty – „”.
  • Dla typu Data – 1 stycznia pierwszego roku – 01/01/0001 00:00:00. Od tej daty liczy się czas w 1C.*
  • Dla typu Boolean wartością domyślną jest technicznie False, ale logicznie obie wartości typu są dopełniane. Dlatego decyzja, czy pusta wartość jest fałszywa, czy nie, opiera się na logice określonego algorytmu.

*Uważaj, poza 1C istnieją różne systemy liczenia dat z różnymi punktami początkowymi.

Brakująca wartość w pełni odpowiada tylko typowi Zero. Ten typ zawiera tylko jedną wartość, co oznacza brak wartości.

Podobny typ Nieokreślony również zawiera tylko jedną wartość, przy czym Niezdefiniowany nie oznacza braku danych, a jedynie niemożność określenia wartości domyślnej dla typu. Niezdefiniowany to wartość domyślna dla typów złożonych, w tym tych, które nie są jawnie zdefiniowane. Na przykład wartość w nowym wierszu tabeli wartości w kolumnie, dla której typ nie jest jawnie zdefiniowany.

Współ odniesienie typów, niepewność jest znacznie mniejsza. Wszystkie typy referencyjne udostępniają wartość null. Pusta wartość to to samo odniesienie wskazujące typ danych, ale bez unikalnego identyfikatora dla konkretnej wartości. Dzięki temu możemy traktować pusty link jak zwykły i zastosować do niego wszystkie metody jakie udostępnia platforma, pracując z nim jakby był pełnoprawną wartością.

Praca z wartościami pustymi w zapytaniu

Niezależnie od tego, czy chcesz jawnie wprowadzić wartość null do wyniku zapytania, czy porównać istniejące wartości z wartością null, musisz wiedzieć, jak opisać wartości null w swoim zapytaniu.

Typy Liczba, ciąg znaków, wartość logiczna są opisane w żądaniu jak w języku wbudowanym:

WYBIERZ 0 jako numer przykładu, „Witaj, świecie” jako przykładowy ciąg, prawda jako przykładowy typ boolean

Nieokreślony, będący zasadniczo typem prymitywnym, jest opisany podobnie:

Wybierz partię.Okres z rejestru akumulacji.Partia jako partia, w której pozostaje.DocumentBatch = Unknown

Puste wartości referencyjne są nieco trudniejsze do zdefiniowania. Wszystkie obiekty referencyjne mają predefiniowaną wartość usługi DesertReference. Dzięki temu możliwe jest wybranie pustego linku w jeden sposób – poprzez funkcję Wartość:

Wybierz wartość(Directory.Nomenclature.EmptyLink) Jak opróżnić nomenklaturę

Możliwości pracy z wartościami Null są nieco bogatsze. Podobnie jak inne typy pierwotne, Null jest opisany w taki sam sposób, jak w języku wbudowanym. Dodatkowo istnieje operator specjalny Is Null i funkcja IsNull.

  • Operator Is Null umożliwia utworzenie wyrażenia logicznego porównującego wybraną wartość z wartością Null.
  • Funkcja IsNull zwraca pierwszy argument, jeśli nie ma wartości Null, a drugi argument w przeciwnym razie.

Wyrażenia definiujące puste wartości można stosować w dowolnych sekcjach zapytań obsługujących wyrażenia. Na przykład możesz dodać puste łącze do sekcji Wybierz lub zaznaczenie wartości Null do warunku.

Praktyczne przykłady

Korzystanie z funkcji Wartość

Wybierz Products.Link jako nomenklaturę, Products.Link = Value(Directory.Nomenclature.EmptyLink) Like ThisLinkEmpty From TueProducts As TueProducts

Korzystanie z operatora Is Null

Wybierz produkty. Link jako nomenklatura, Produkty. Link ma wartość null jak ten LinkEmpty From TueProducts As TueProducts

Null po lewej stronie lub pełne połączenie

Kontrola zerowa

Przykład ilustruje typową praktyczną sytuację, gdy w przypadku lewego złączenia nie ma dopasowania dla pierwszej tabeli w drugiej. W takim przypadku wszystkie pola drugiej tabeli będą miały wartość Null.

Wybierz TueProducts.Link jako nomenklaturę, pozostałości.QuantityRemaining jako ilość, Remainders.QuantityRemaining to Null As NoRemaining From TueProducts jako TueProducts Lewe połączenie RegisterAccumulations.ProductsInWarehouses.Remains jako pozostałości do wtorkuProducts.Link = Remains.Nomenclature

Obsługa wartości null

Modyfikacja poprzedniego zapytania w celu zademonstrowania wspólnej techniki uzyskiwania niektórych wartości domyślnych w celu zastąpienia brakujących. W tym przykładzie przy użyciu funkcji IsNull brakująca wartość reszta zostaje zastąpiona logicznie poprawną wartością 0.

Wybierz TueProducts.Link jako nomenklaturę, IsNull (Remaining.QuantityRemaining, 0) jako ilość z TueProducts jako TueProducts Lewe połączenie RegisterAccumulations.ProductsInWarehouses.Remains jako pozostałości do wtorkuProducts.Link = Remains.Nomenclature

W tym artykule przyjrzeliśmy się różnym typom wartości pustych i ich właściwościom, przestudiowaliśmy sposoby definiowania różnych typów wartości pustych w zapytaniach, a w części praktycznej przekonaliśmy się o łatwości zastosowania omawianego materiału.

Powiedz przyjaciołom