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

ENUMに無効な値を挿入するとMySQLは何を返しますか?


厳密なSQLモードが無効になっていて、無効な値(許可された列挙値のリストにない)をENUMに挿入すると、MySQLはエラーをスローする代わりに空の文字列を挿入します。ただし、厳密なSQLモードが有効になっている場合、MySQLは無効な値を挿入するとエラーをスローします。

厳密なSQLモードを無効にした後、次のように無効な文字列をENUMに挿入します-

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

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

上記のクエリから、MySQLが無効な文字列の場所に空の文字列を挿入し、エラーがスローされていないことがわかります。

これで、次のクエリを使用してインデックス番号を取得できます。これは0であり、空の文字列のインデックス値は常に0であるため、MySQLによって挿入された文字列が空の文字列であることを確認します。

mysql> Select Grade + 0 from result;
+-----------+
| Grade + 0 |
+-----------+
| 0         |
+-----------+
1 row in set (0.00 sec)

ただし、以下のクエリで行われるように、SQL strictモードを有効にすると、MySQLは無効な文字列をENUMに挿入するとエラーをスローします。

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

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

  1. Javaを使用してDATEをMySQL列の値に挿入するにはどうすればよいですか?

    このために、JavaのPreparedStatementを使用できます。まず、列の1つがDATE型のArrivalDateであるテーブルを作成しましょう- mysql> create table DemoTable(    PassengerId int,    PassengerName varchar(40),    ArrivalDate date ); Query OK, 0 rows affected (0.82 sec) 日付を挿入するためのJAVAコードは次のとおりです- import java.sql.Conn

  2. MySQLデータベースにnull値を挿入するJavaアプリケーション?

    Javaでnull値を設定するには、ステートメントは次のとおりです- ps.setNull(yourIndex, Types.NULL); まずテーブルを作成しましょう- mysql> create table DemoTable1893    (    FirstName varchar(20)    ); Query OK, 0 rows affected (0.00 sec) Javaコードは次のとおりです- import java.sql.Connection; import java.sql.DriverManag