پایگاه داده MySQL چگونه پرس و جوهای غیر تهی را مدیریت می کند؟ MySQL دستور انتخاب null نیست

MySQL چگونه کوئری‌های غیر تهی را مدیریت می‌کند؟ ( عبارت MySQL IS NOT NULL SELECT)

مدیریت تهی در MySQL

ما قبلاً می دانیم که MySQL از دستور SQL SELECT و عبارت WHERE برای خواندن داده ها در جدول داده استفاده می کند، اما وقتی فیلد شرط query ارائه شده NULL باشد، ممکن است دستور به درستی کار نکند.

برای مدیریت این وضعیت، MySQL سه عملگر اصلی را ارائه می دهد:

  • IS NULL:زمانی که مقدار ستون NULL باشد، این عملگر true را برمی گرداند.
  • NULL نیست:زمانی که مقدار ستون NULL نباشد عملگر true را برمی گرداند.
  • <=>:  عملگر مقایسه (برخلاف عملگر =) زمانی true را برمی گرداند که دو مقدار مقایسه شده NULL باشند.

عملیات مقایسه شرطی در NULL ویژه هستند.شما نمی توانید از = NULL یا ! =NULL مقادیر NULL را در ستون پیدا می کند.

در MySQL، مقایسه یک مقدار NULL با هر مقدار دیگر (حتی NULL) همیشه false را برمی گرداند، یعنی NULL = NULL false را برمی گرداند.

NULL در MySQL با استفاده از عملگرهای 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 秒)

برای بررسی اینکه آیا ستون chenweiliang_test_tbl در یک جدول داده NULL است یا خیر، باید از IS NULL و IS NOT NULL استفاده کنید ، همانطور که در مثال زیر نشان داده شده است:

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

 

امیدوارم مقاله "چگونه کوئری‌های با مقدار غیر تهی را در پایگاه داده MySQL مدیریت کنیم؟ MySQL یک دستور انتخاب تهی نیست" که در وبلاگ چن ویلیانگ ( https://www.chenweiliang.com/ ) به اشتراک گذاشته شده است، برای شما مفید باشد.

لینک این مقاله را به اشتراک بگذارید: https://www.chenweiliang.com/cwl-491.html

برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!

اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

رفته به بالا