A null értéke sql-ben, megtalálja az ismeretlen értéket, nem nulla

Még kis adatbázisok esetén is gyakran vannak olyan helyzetek, ahol az asztal mező értéke nem ismert. Az ilyen helyzetek előfordulásának okai eltérőek lehetnek, kezdve szoftveres hibákkal és adatbázis-tervezéssel, és megszűnnek a szervezet üzleti folyamatainak jellemzőivel.







Ha figyelembe vesszük a képzési adatbázis alkalmazottai táblázatának diagramját, láthatjuk, hogy a diagram utolsó oszlopa azt jelzi, hogy ismeretlen értékek találhatók egy adott területen, nevezetesen:

  • Középnév. Lehetséges, hogy a munkavállaló azon ország állampolgára, ahol a patronimát nem használják.
  • Az elbocsátás időpontja hiányozhat, mivel az elbocsátás még nem történt meg.
  • Nem feltétlenül ismerhető meg a csoport, mivel a munkavállalót a bérbeadás bármely szakaszában nem lehet a csoporthoz rendelni.
A null értéke sql-ben, megtalálja az ismeretlen értéket, nem nulla

Fontos megérteni, hogy az ismeretlen (hiányzó) értékek nem nulla (numerikus mezők), és nem üres karakterlánc (szövegmezők esetén). Mivel a nulla egy nagyon specifikus érték, például 0 rubel a hátralékban, és egy üres karakterlánc azt jelzi, hogy jelenleg nem lehet nulla, mint egy nulla hosszúságú string a vonal mezőjében. A fent megadott középső név példájánál a NULL érték helyett egy üres karakterláncot adhat meg, és ez egyértelművé tenné, hogy a munkavállaló patronómája elvben nem, és nem elfelejtette letenni.







Keresse meg a hiányzó értékeket

Megállapítottuk, hogy a NULL nem egy konkrét érték, ezért meg kell értened, hogyan működik együtt az összehasonlító szolgáltatókkal. Az érték nem lehet egyenlő (nagyobb vagy kisebb is) ismeretlen értékre, akkor a feltétel NULL = NULL is hamis. A hiányzó érték meghatározásához a speciális feltétel IS NULL (ismeretlen). Ezzel szemben, ha ismert értékeket szeretne találni, akkor a feltétel NEM NULL értéket ad meg.

Fontolja meg a problémát.
Keress minden munkatársat, akit valaha elbocsátottak.

A megoldás.
Ha a munkatársak "Date_delayment" mezőjében nincs érték, akkor az alkalmazottak jelenleg dolgoznak. Ezért olyan vonalakat kell találni, ahol az érték ismert. A következő sql lekérdezés 7 sorból áll, amelyek kielégítik a megoldást:

A megoldás.
A hívást elfogadhatatlannak tartják, ha nincs olyan azonosítója, amelyik a hívást fogadta a "Hívások" táblában a "Munkavállaló" mezőben. A "Employee" és a "Date_Time" mezők táblázatos szűrésével 184 sort kapunk, amelyek megfelelnek a lekérdezésnek:

Ismeretlen értékek kezelése

Ha a lekérdezésekben olyan mezőket használ, amelyek lehetővé teszik a NULL értékeket, győződjön meg arról, hogy ezeket a mezőket feldolgozza a hibák elkerülése érdekében. Például bármely aritmetikai művelet vagy a karakterláncok egyesítése, ahol legalább egy NULL argumentum van, ismeretlen értéket ad vissza.

Tekintsünk egy példát.
Szükséges meghatározni a szolgálat időtartamát minden egyes alkalmazottnál, ideértve a kiküldetést is. Tapasztalat, hogy napokban kiteljesedjen.

A szolgáltatás időtartamának meghatározásához meg kell találni a munkavállaló felvételének időpontja és az elválasztás időpontja közötti időtartamot (különbség). Ehhez használhatja a DATEDIFF funkciót (leírása megtalálható a Microsoft dokumentációjában). De mi a helyzet az elbocsátott munkavállalókkal, akiknek nincs kitöltésük dátuma? Ha végrehajtja az alábbi lekérdezést, győződjön meg róla, hogy a legtöbb sor nem mutatja a szolgáltatás hosszúságát:

Ezért a "Date_delivery" mezőt az ISNULL (ha az első argumentum NULL, akkor a függvény visszaküldi a második argumentumot) és a GETDATE (visszatéríti az aktuális rendszer dátumát és időpontját) funkcióval történik. A következő lekérdezés megjeleníti a szolgáltatás hosszúságát minden sorban:

Ha az office-menu.ru anyagok segítenek Önnek, akkor kérjük, támogassa a projektet, hogy továbbfejlesszük.




Kapcsolódó cikkek