Як база дадзеных MySQL апрацоўвае запыты ненулявых значэнняў? MySQL не з'яўляецца нулявым аператарам выбару

База дадзеных MySQLЯк апрацоўваць запыт ненулявога значэння?MySQL не з'яўляецца пустым аператарам выбару

Апрацоўка нулявых значэнняў MySQL

Мы ўжо ведаем, што MySQL выкарыстоўвае каманду SQL SELECT і пункт WHERE для чытання даных з табліцы даных, але калі прадастаўленае поле ўмовы запыту роўна NULL, каманда можа не працаваць належным чынам.

Каб справіцца з гэтай сітуацыяй, MySQL забяспечвае тры асноўныя аператары:

  • НУЛЬ:Гэты аператар вяртае ісціну, калі значэнне слупка роўна NULL.
  • НЕ НУЛЬ:Калі значэнне слупка не роўна NULL, аператар вяртае ісціну.
  • <=>:  Аператар параўнання (адрозны ад аператара =), вяртае ісціну, калі два параўноўваных значэння маюць NULL.

Аперацыя ўмоўнага параўнання NULL адносна асаблівая. Вы не можаце выкарыстоўваць = NULL або ! =NULL знаходзіць NULL значэння ў слупку.

У MySQL параўнанне значэння NULL з любым іншым значэннем (нават NULL) заўсёды вяртае false, гэта значыць NULL = NULL вяртае false.

MySQL апрацоўвае NULL з дапамогай аператараў IS NULL і IS NOT NULL.


Выкарыстанне NULL значэння ў камандным радку

У наступным прыкладзе табліца chenweiliang_test_tbl у базе дадзеных chenweiliang усталявана так, каб утрымліваць два слупкі, chenweiliang_author і chenweiliang_count, а значэнне NULL устаўляецца ў chenweiliang_count.

Інстанцыя

Паспрабуйце наступныя прыклады:

Стварыце табліцу даных 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 秒) 

У наступных прыкладах вы бачыце = і ! Аператар = не мае ніякага эфекту:

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

Каб даведацца, ці з'яўляецца NULL слупок chenweiliang_test_tbl у табліцы даных, трэба выкарыстоўвацьНУЛЬНЕ НУЛЬ, наступныя прыклады:

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 з дапамогай сцэнарыя PHP

У скрыптах PHP вы можаце выкарыстоўваць аператары if...else, каб вызначыць, ці пустая зменная, і стварыць адпаведныя ўмоўныя аператары.

У наступным прыкладзе PHP усталёўвае зменную $chenweiliang_count, а затым выкарыстоўвае гэтую зменную для параўнання з полем chenweiliang_count у табліцы даных:

Тэст MySQL ORDER BY:

<?
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 ( https://www.chenweiliang.com/ ) падзяліўся "Як база дадзеных MySQL апрацоўвае запыты ненулявых значэнняў?" MySQL is not null selection statement" можа быць карысным для вас.

Запрашаем падзяліцца спасылкай на гэты артыкул:https://www.chenweiliang.com/cwl-491.html

Каб адкрыць больш схаваных хітрасцяў🔑, далучайцеся да нашага канала ў Telegram!

Падзяліцеся і пастаўце лайкі, калі вам гэта падабаецца! Вашы акцыі і лайкі - наша пастаянная матывацыя!

 

发表 评论

Ваш электронны адрас не будзе апублікаваны. 必填 项 已 用 * Этыкетка

Пракрутка да пачатку