Vi har sett SQL VELG
kommandoen sammen med WHERE
klausul for å hente data fra MySQL tabellen, men når vi prøver å gi en tilstand, som sammenligner felt eller kolonne verdien til NULL
, betyr det ikke fungerer ordentlig
For å håndtere en slik situasjon MySQL gir tre operatører
ER NULL.
operatør avkastning true hvis kolonneverdi er NULL
ER IKKE NULL:..
operatøren returnerer true hvis kolonneverdi ikke er NULL
<. = >:
operatør sammen verdier, som (i motsetning til = operatør) gjelder også for to NULL verdier
Forhold som involverer NULL er spesielle. Du kan ikke bruke = NULL eller! = NULL å lete etter NULL-verdier i kolonner. Slike sammenligninger alltid mislykkes fordi det er umulig å si om de er sanne. Selv NULL = NULL svikter
For å se etter kolonner som er eller ikke er NULL, ER bruk NULL eller IS NOT NULL
Bruke NULL verdier på Command Prompt.:.
Anta et bord tcount_tbl
i Tutorials database og den inneholder to kolonner tutorial_author Hotell og tutorial_count
, hvor en NULL tutorial_count indikerer at verdien er ukjent:
Eksempel:
Prøv følgende eksempler:
root @ host # mysql -u root -p passord; Skriv inn passord: ******* mysql > bruke Tutorials; Database changedmysql > opprette tabellen tcount_tbl - > (- ≫ tutorial_author varchar (40) NOT NULL, - > tutorial_count INT - >); Query OK, 0 rader påvirket (0,05 sek) mysql > INSERT INTO tcount_tbl - > (tutorial_author, tutorial_count) verdier ('mahran', 20); mysql > INSERT INTO tcount_tbl - > (tutorial_author, tutorial_count) verdier ('Mahnaz', NULL); mysql > INSERT INTO tcount_tbl - > (tutorial_author, tutorial_count) verdier ('Jen', NULL); mysql > INSERT INTO tcount_tbl - > (tutorial_author, tutorial_count) verdier ('Gill', 20); mysql > SELECT * from tcount_tbl; + ----------------- + ---------------- + | tutorial_author | tutorial_count | + ----------------- + ---------------- + | mahran | 20 || Mahnaz | NULL || Jen | NULL || Gill | 20 | + ----------------- + ---------------- + 4 rader i sett (0,00 sek) mysql >
Du kan se at = og = fungerer ikke med NULL verdier som følger:!
mysql > SELECT * FROM tcount_tbl WHERE tutorial_count = NULL; Empty sett (0,00 sek) mysql > SELECT * FROM tcount_tbl WHERE tutorial_count = NULL; Empty sett (0,01 sek)
For å finne poster der tutorial_count kolonnen er eller ikke er NULL, bør søkene være skrevet slik:!
Mysql > SELECT * FROM tcount_tbl - > HVOR tutorial_count IS NULL; + ----------------- + ---------------- + | tutorial_author | tutorial_count | + ----------------- + ---------------- + | Mahnaz | NULL || Jen | NULL | + ----------------- + ---------------- + 2 rader i sett (0,00 sek) mysql > SELECT * from tcount_tbl - > HVOR tutorial_count ER IKKE NULL; + ----------------- + ---------------- + | tutorial_author | tutorial_count | + ----------------- + ---------------- + | mahran | 20 || Gill | 20 | + ----------------- + ---------------- + 2 rader i sett (0,00 sek)
Håndtering NULL Verdier i PHP Script:
Du kan bruke hvis ... else
betingelse for å utarbeide en spørring basert på NULL verdi
Eksempel:.
Følgende eksempel tar tutorial_count fra utsiden og deretter sammenligner det med verdien tilgjengelig i tabellen
< php $ dbhost =.? 'localhost: 3036'; $ dbuser = 'root'; $ dbpass = 'rootpassword'; $ conn = mysql_connect ($ dbhost, $ dbuser, $ dbpass); if ($ conn!) {die ('Kunne ikke koble til:' mysql_error ().);} if (isset ($ tutorial_count)) {$ sql = "SELECT tutorial_author , tutorial_count FRA tcount_tbl HVOR tutorial_count =
$ tutorial_count ';} else {$ sql = "SELECT tutorial_author, tutorial_count Fra tcount_tbl HVOR tutorial_count ER
$ tutorial_count';} mysql_select_db ('Tutorials'); $ retval = mysql_query ($ sql, $ conn); if ($ retval!) {die ('Kunne ikke få data:'. mysql_error ());} while ($ row = mysql_fetch_array ($ retval, MYSQL_ASSOC)) { echo "Forfatter: {$ row ['tutorial_author']} < br > "." Count: {$ row ['tutorial_count']} < br > "." -------------------------------- ≪ br > ";} echo" Hentet de data vellykket \\ n "; mysql_close ($ conn); >