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