Kaip MySQL duomenų bazė apdoroja nenulinės reikšmės užklausas? MySQL nėra nulinis pasirinkimas

MySQL duomenų bazėKaip tvarkyti užklausą be nulinės reikšmės?MySQL nėra nulinis atrankos teiginys

MySQL nulinių reikšmių tvarkymas

Jau žinome, kad MySQL naudoja komandą SQL SELECT ir WHERE sąlygą, kad nuskaitytų duomenis iš duomenų lentelės, tačiau kai pateiktas užklausos sąlygos laukas yra NULL, komanda gali neveikti tinkamai.

Norėdami išspręsti šią situaciją, MySQL siūlo tris pagrindinius operatorius:

  • YRA NULIS:Šis operatorius grąžina true, kai stulpelio reikšmė yra NULL.
  • NĖRA NULIS:Kai stulpelio reikšmė nėra NULL, operatorius grąžina true.
  • <=>:  Palyginimo operatorius (skirtingas nuo = operatorius), grąžina true, kai dvi lyginamos reikšmės yra NULL.

Sąlyginio palyginimo operacija NULL yra gana ypatinga. Negalite naudoti = NULL arba ! =NULL stulpelyje randa NULL reikšmes.

MySQL NULL reikšmės palyginimas su bet kuria kita reikšme (net NULL) visada grąžina false, tai yra, NULL = NULL grąžina false.

„MySQL“ tvarko NULL, naudodama operatorius IS NULL ir IS NOT NULL.


NULL reikšmės naudojimas komandų eilutėje

Šiame pavyzdyje duomenų bazėje chenweiliang lentelėje chenweiliang_test_tbl nustatytas du stulpeliai: chenweiliang_author ir chenweiliang_count, o NULL reikšmė įterpiama į chenweiliang_count.

pavyzdys

Išbandykite šiuos pavyzdžius:

Sukurkite duomenų lentelę chenweiliang_test_tbl

root @ host #mysql -u root -p password; 输入密码:*******
 mysql > 使用chenweiliang ;
数据库改变了mysql > create table chenweiliang_test_tbl 
 - > (
 - > chenweiliang_author varchar (40 )NOT NULL , - > chenweiliang_count INT 
 - > );
查询OK ,0 行受影响(0.05 秒)mysql >
 
 
INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' chenweiliang ' ,20 );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' 陈沩亮博客' ,NULL );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values ( ' Google ' ,NULL );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' FK ' ,20 );
 
mysql > SELECT * from chenweiliang_test_tbl ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | 陈沩亮博客| NULL | | Google | NULL | | FK | 20 | + --------------- + -------------- +
 4 行中集合(0.01 秒) 

Tolesniuose pavyzdžiuose galite matyti = ir ! = operatorius neturi jokio poveikio:

mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count = NULL ;
空集(0.00 秒)mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count != NULL ;
空集(0.01 秒)

Norėdami sužinoti, ar duomenų lentelės stulpelis chenweiliang_test_tbl yra NULL, turite naudotiIS NULLIrNĖRA NULL, šie pavyzdžiai:

mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count IS NULL ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | 陈沩亮博客| NULL | | Google | NULL | + --------------- + -------------- +
 2 行中的组(0.01 秒)的MySQL > SELECT * 从chenweiliang_test_tbl WHERE chenweiliang_count IS NOT 空值 
 
 ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | FK | 20 | + --------------- + -------------- +
 2 行中的组(0.01 秒) 

NULL verčių tvarkymas naudojant PHP scenarijų

PHP scenarijuose galite naudoti if...else teiginius, kad apdorotumėte, ar kintamasis yra tuščias, ir generuoja atitinkamus sąlyginius sakinius.

Šiame pavyzdyje PHP nustato $chenweiliang_count kintamąjį, o tada naudoja šį kintamąjį, kad palygintų su chenweiliang_count lauku duomenų lentelėje:

MySQL ORDER BY testas:

<?
php $ dbhost = ' localhost:3306 ' ; // mysql服务器主机地址

$ dbuser = ' root ' ; // mysql用户名
$ dbpass = ' 123456 ' ; // mysql用户名密码
$ conn = mysqli_connect ($ dbhost ,$ dbuser ,$ dbpass );
如果(!$ conn ){ die (' 连接失败:' 。mysqli_error ($ conn ));
} // 设置编码,防止中文乱码

mysqli_query ($ conn ,“ set names utf8 ” );
 
if (isset ($ chenweiliang_count )){ $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count = $ chenweiliang_count ” ;
} else { $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count IS NULL ” ;
} mysqli_select_db ($ conn ,'


 chenweiliang ' );
$ retval = mysqli_query ($ conn ,$ sql );
if (!$ retval ){ die (' 无法读取数据:' 。mysqli_error ($ conn ));
} echo ' <h2>陈沩亮博客IS NULL测试<h2> ' ;
echo ' <table border =“1”> <tr> <td>作者</ td> <td>登陆次数</ td> </ tr> ' ;

 $ retval ,MYSQL_ASSOC )){ echo “ <tr> ” 。
 “ <td> {$ row ['chenweiliang_author']} </ td> ” 。
 “ <td> {$ row ['chenweiliang_count']} </ td> ” 。
 “ </ tr> ” ;
} echo ' </ table> ' ;
mysqli_close ($ conn );
?>

 

发表 评论

Jūsų el. pašto adresas nebus skelbiamas. Naudojami privalomi laukai * Etiketė

Pereikite į viršų