Valoarea null în sql, găsiți valoarea necunoscută, nu este nulă

Chiar și pentru bazele de date mici, există adesea situații în care valoarea unui câmp de tabel poate să nu fie cunoscută. Motivele pentru apariția unor astfel de situații pot fi diferite, începând cu erorile software și proiectarea bazei de date, care se termină cu caracteristicile proceselor de afaceri ale organizației.







Dacă luăm în considerare diagrama tabelului angajaților din baza de date de instruire, puteți observa că ultima coloană a diagramei indică posibilitatea de a avea valori necunoscute într-un anumit domeniu, și anume:

  • Nume de mijloc. Este posibil ca angajatul să fie cetățean al țării în care nu este folosit patronimicul.
  • Data concedierii poate fi absentă, deoarece concedierea nu a avut loc încă.
  • Este posibil ca grupul să nu fie cunoscut deoarece angajatul nu poate fi repartizat grupului în niciunul din etapele de angajare.
Valoarea null în sql, găsiți valoarea necunoscută, nu este nulă

Este important să se înțeleagă că valorile necunoscute (lipsă) - nu este zero (pentru câmpuri numerice) sau un șir gol (pentru câmpurile de text). Deoarece la zero este o valoare foarte specifică, cum ar fi 0 ruble de datorii, și un șir gol este raportat că la momentul nimic mai mult decât un șir de lungime zero în linia nu ar trebui să fie. În exemplul unui patronim, de mai sus, în loc de valori NULL, puteți specifica un șir gol și ar face o clarificare suplimentară care inițial de mijloc angajatului nu este, în principiu, dar nu că a uitat să facă.







Găsiți valorile lipsă

Sa constatat mai sus că NULL nu este o valoare specifică, deci trebuie să înțelegeți cum vor funcționa operatorii de comparație. Nici o valoare nu poate fi egală (mai mare sau mai mică) unei valori necunoscute, chiar și condiția NULL = NULL este falsă. Pentru a determina valoarea lipsă, utilizați condiția specială IS NULL (nu este cunoscută). În schimb, dacă doriți să găsiți valori cunoscute, este specificată condiția IS NOT NULL.

Luați în considerare problema.
Găsiți toți angajații care au fost vreodată concediați.

Soluția.
Dacă nu există valoare în câmpul "Date_delayment" din tabelul angajaților, atunci angajații lucrează în acest moment. Prin urmare, este necesar să găsim linii unde valoarea este cunoscută. Următoarea interogare sql va scoate 7 linii care satisfac soluția:

Soluția.
Un apel este considerat inacceptabil dacă nu există nici un id al operatorului care a primit apelul în tabelul "Apeluri" din câmpul "Angajat". Prin filtrarea tabelului în câmpurile "Employee" și "Date_Time" obținem 184 de rânduri care satisfac cererea:

Manipularea valorilor necunoscute

Dacă în interogările dvs. veți folosi câmpuri care permit valori NULL, asigurați-vă că procesați astfel de câmpuri pentru a evita erorile. De exemplu, orice operațiuni aritmetice sau o uniune de șiruri de caractere, în care există cel puțin un argument NULL, vor întoarce o valoare necunoscută.

Să luăm în considerare un exemplu.
Este necesar să se determine durata de activitate a fiecărui angajat, inclusiv a celor disponibilizați, în momentul de față. Experiența de a aduce în zile.

Pentru a determina durata serviciului este necesar să se găsească intervalul (diferența) dintre data angajării unui angajat și data separării. Pentru a face acest lucru, puteți utiliza funcția DATEDIFF (descrierea sa poate fi găsită în documentația Microsoft). Dar ce se întâmplă cu angajații neremunerați care nu au dat data descărcării? Dacă executați interogarea de mai jos, puteți să vă asigurați că majoritatea rândurilor nu indică durata serviciului:

Prin urmare, domeniul de aplicare cultivat funcția isnull „Data_uvolneniya“ (dacă primul argument este NULL, funcția returnează al doilea argument) și getDate (returnează data și ora sistemului curent). Următoarea interogare va afișa durata serviciului pe fiecare linie:

Dacă materialele office-menu.ru v-au ajutat, vă rugăm să sprijiniți proiectul astfel încât să îl putem dezvolta mai departe.







Articole similare

Trimiteți-le prietenilor: