sql >> Databasteknik >  >> RDS >> Mysql

Infogar null i char(1)

Det låter som att du försöker infoga strängen 'NULL' till char(1) fält, snarare än en SQL NULL, och du har strikt SQL-läge aktiverat, vilket förhindrar att detta trunkeras till N .

Om du kan, kör

SHOW CREATE TABLE <your_table_name>

i MySQL-skalet för att avgöra om ditt målfält accepterar NULL. Utan kontext (kör du detta som ren SQL, eller ansluter du till databasen från något klientprogram på ett annat språk?) är det svårt att tillhandahålla den exakta lösningen, men du kan ha något sånt här:

INSERT <your_table_name>
SELECT first_name, 'NULL', last_name

där 'NULL' helt enkelt är en sträng utan någon speciell betydelse, när det du avser är

INSERT <your_table_name>
SELECT first_name, NULL, last_name

Här är en illustration:

mysql> CREATE TABLE my_table ( middle_initial CHAR(1) NULL );
mysql> INSERT INTO my_table SELECT 'NULL';
mysql> SHOW WARNINGS;

Level       Code    Message
Warning     1265    Data truncated for column 'middle_initial' at row 1

mysql> SELECT * FROM my_table;

middle_initial
--------------
N

mysql> set sql_mode = 'STRICT_TRANS_TABLES';

mysql> INSERT INTO my_table SELECT 'NULL';

ERROR 1406 (22001) at line 16: Data too long for column 'middle_initial' at row 1

mysql> INSERT INTO my_table SELECT NULL;
mysql> SELECT * FROM my_table;

middle_initial
--------------
N
NULL

Lite av en poäng - ursäkta om ingen nytta ...




  1. Hur man beställer efter månadsnamn i SQLite

  2. Varför avbryter Hibernate/JDBC/MySQL anslutningar efter någon dag?

  3. Hur man avinstallerar Mysql Shell på MacOS

  4. Steg för att implementera hashable i PHP och Mysql