Je, hifadhidata ya MySQL inashughulikia vipi maswali ya dhamana yasiyo ya ubatili? MySQL sio taarifa ya kuchagua

Hifadhidata ya MySQLJinsi ya kushughulikia maswali ya thamani yasiyo ya null?MySQL sio kauli iliyochaguliwa vibaya

Utunzaji mbaya katika MySQL

Tayari tunajua kwamba MySQL hutumia amri ya SQL SELECT na kifungu cha WHERE kusoma data kwenye jedwali la data, lakini wakati sehemu ya hali ya hoja iliyotolewa ni NULL, amri inaweza isifanye kazi vizuri.

Ili kushughulikia hali hii, MySQL hutoa waendeshaji wakuu watatu:

  • NI NULL:Opereta huyu anarejesha kweli wakati thamani ya safu wima ni NULL.
  • SI UTUPU:Opereta hurejesha kweli wakati thamani ya safu wima si NULL.
  • <=>:  Opereta ya kulinganisha (tofauti na = mwendeshaji) inarudi kuwa kweli wakati maadili mawili yanayolinganishwa ni NULL.

Shughuli za kulinganisha za masharti kwenye NULL ni maalum.Huwezi kutumia = NULL au ! =NULL hupata maadili NULL kwenye safu.

Katika MySQL, ulinganisho wa thamani ya NULL na thamani nyingine yoyote (hata NULL) daima hurejesha sivyo, yaani NULL = NULL hurejesha sivyo.

NULL inashughulikiwa katika MySQL kwa kutumia IS NULL na IS NOT NULL waendeshaji.


Tumia NULL thamani katika haraka ya amri

Katika mfano ufuatao, jedwali chenweiliang_test_tbl katika hifadhidata chenweiliang imewekwa kuwa na safu wima mbili, chenweiliang_author na chenweiliang_count, na maadili NULL yamewekwa ili kuingizwa katika chenweiliang_count.

Mfano

Jaribu mifano ifuatayo:

Unda jedwali la data 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 秒) 

Katika mfano ufuatao unaweza kuona = na ! Opereta = haifanyi kazi:

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

Ili kujua kama safu wima ya chenweiliang_test_tbl kwenye jedwali la data ni NULL, lazima utumieNi NULLNaSI NULL, mfano ufuatao:

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

Kushughulikia maadili NULL na hati ya PHP

Katika hati ya PHP, unaweza kutumia if...else taarifa kuchakata ikiwa kutofautisha ni tupu na kutoa taarifa ya masharti inayolingana.

Katika mfano ufuatao PHP huweka utofauti wa $chenweiliang_count na kisha hutumia utaftaji huo kulinganisha na sehemu ya chenweiliang_count kwenye jedwali la data:

MySQL ORDER BY mtihani:

<?
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 Blog ( https://www.chenweiliang.com/ ) ilishirikiwa "Je, hifadhidata ya MySQL inashughulikia vipi maswali ya dhamana yasiyo ya ubatili? MySQL sio taarifa isiyo na maana" kukusaidia.

Karibu kushiriki kiungo cha makala hii:https://www.chenweiliang.com/cwl-491.html

Karibu kwenye chaneli ya Telegramu ya blogu ya Chen Weiliang ili kupata masasisho mapya zaidi!

🔔 Kuwa wa kwanza kupata "Mwongozo wa Matumizi ya Zana ya AI ya Uuzaji wa Maudhui ya ChatGPT" katika saraka ya juu ya kituo! 🌟
📚 Mwongozo huu una thamani kubwa, 🌟Hii ni fursa adimu, usiikose! ⏰⌛💨
Share na like ukipenda!
Kushiriki kwako na kupenda kwako ndio motisha yetu inayoendelea!

 

发表 评论

Anwani yako ya barua pepe haitachapishwa. 必填 项 已 用 * 标注

tembeza juu