Kiel MySQL-datumbazo pritraktas ne-nulvalorajn demandojn? MySQL ne estas nula elekta deklaro

MySQL-datumbazoKiel trakti ne-nulvalorajn demandojn?MySQL ne estas nula elekta deklaro

Nula uzado en MySQL

Ni jam scias, ke MySQL uzas la komandon SQL SELECT kaj la klaŭzon WHERE por legi la datumojn en la datumtabelo, sed kiam la demandkondiĉa kampo provizita estas NULL, la komando eble ne funkcias ĝuste.

Por trakti ĉi tiun situacion, MySQL disponigas tri ĉefajn funkciigistojn:

  • ESTAS NULL:Ĉi tiu operatoro liveras vera kiam la kolumna valoro estas NULL.
  • NE ESTAS NULA:La operatoro resendas vera kiam la kolumna valoro ne estas NULL.
  • <=>:  La kompara operatoro (male al la = operatoro) resendas vera kiam la du valoroj komparitaj estas NULL.

Kondiĉaj komparoperacioj sur NULL estas specialaj.Vi ne povas uzi = NULL aŭ ! =NULL trovas NULL-valorojn en la kolumno.

En MySQL, komparo de NULL valoro kun iu ajn alia valoro (eĉ NULL) ĉiam liveras malvera, t.e. NULL = NULL liveras malvera.

NULL estas pritraktita en MySQL uzante la IS NULL kaj IS NOT NULL operatoroj.


Uzu NULL-valoron en komanda prompto

En la sekva ekzemplo, la tabelo chenweiliang_test_tbl en la datumbazo chenweiliang estas agordita por enhavi du kolumnojn, chenweiliang_author kaj chenweiliang_count, kaj NULL-valoroj estas enmetitaj en chenweiliang_count.

ekzemplo

Provu la sekvajn ekzemplojn:

Krei datuman tabelon 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 秒) 

En la sekva ekzemplo vi povas vidi = kaj ! La = operatoro ne funkcias:

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

Por ekscii ĉu la kolumno chenweiliang_test_tbl en la datumtabelo estas NULL, vi devas uziESTAS NULANE ESTAS NULA, la sekva ekzemplo:

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 秒) 

Pritrakti NULL-valorojn per PHP-skripto

En la PHP-skripto, vi povas uzi la if...else deklaron por prilabori ĉu la variablo estas malplena kaj generi respondan kondiĉan deklaron.

En la sekva ekzemplo PHP metas la variablon $chenweiliang_count kaj tiam uzas tiun variablon por kompari kun la kampo chenweiliang_count en la datumtabelo:

MySQL MENDU PER testo:

<?
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 );
?>

 

Hope Chen Weiliang Blogo ( https://www.chenweiliang.com/ ) konigis "Kiel MySQL-datumbazo pritraktas ne-nulvalorajn demandojn? MySQL ne estas nula elekta deklaro" por helpi vin.

Bonvenon dividi la ligon de ĉi tiu artikolo:https://www.chenweiliang.com/cwl-491.html

Bonvenon al la Telegram-kanalo de la blogo de Chen Weiliang por ricevi la plej novajn ĝisdatigojn!

🔔 Estu la unua ricevi la valoran "ChatGPT Content Marketing AI Tool Use Guide" en la ĉefa dosierujo de la kanalo! 🌟
📚 Ĉi tiu gvidilo enhavas grandegan valoron, 🌟Ĉi tio estas malofta ŝanco, ne maltrafu ĝin! ⏰⌛💨
Kunhavigu kaj ŝatu se vi ŝatas!
Via kundivido kaj ŝatoj estas nia kontinua instigo!

 

Lasu komenton

Via retpoŝta adreso ne estos publikigita. Bezonataj kampoj estas uzataj * Etikedo

rulumu al la supro