MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLは列挙の空の値とnull値をどのように処理しますか?


MySQLは、SQLモードがTRADITIONAL、STRICT_TRANS_TABLES、またはSTRICT_ALL_TABLESとして設定されていない場合にのみ、列挙に空の値を受け入れます。そうしないと、MySQLは空の値を受け入れず、エラーをスローします。各列挙値にはインデックス値があることがわかっているので、空の値には0のインデックス値があります。

mysql> SET SQL_MODE ='Traditional';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert into result(id, name,grade) values(100, 'Raman', '');
ERROR 1265 (01000): Data truncated for column 'Grade' at row 1

これで、SQLモードを変更した後、次のように空の文字列を挿入できるようになります-

mysql> Set SQL_MODE ='';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert into result(id, name, grade) values(100, 'Raman', '');
Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
+-----+-------+-------+
1 row in set (0.00 sec)

MySQLは、ENUM列でNOT NULLを指定しない場合にのみ、列挙にNULL値を受け入れます。各列挙値にはインデックス値があることがわかっているので、NULLのインデックス値はNULLです。

mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL);
Query OK, 1 row affected (0.04 sec)

ENUM列の宣言でNOTNULLを指定していないため、上記のクエリではNULL値が挿入されます。

mysql> select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
| 101 | Rahul | NULL  |
+-----+-------+-------+
2 rows in set (0.00 sec)

  1. MySQLでnull値を無視し、残りの値を表示します

    IS NOT NULLを使用して、null以外の値を検索し、それらを表示します。まずテーブルを作成しましょう- mysql> create table DemoTable1458    -> (    -> StudentName varchar(20),    -> StudentScore int    -> ); Query OK, 0 rows affected (0.52 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> in

  2. MySQLのNULL値の場合は1を表示します

    まずテーブルを作成しましょう- mysql> create table DemoTable1963    (    Counter int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1963 values(20); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1963