Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento di null in char(1)

Sembra che tu stia tentando di inserire la stringa 'NULL' nel char(1) campo, anziché un NULL SQL, e hai abilitato la modalità SQL rigorosa, che impedisce che venga troncato a N .

Se puoi, corri

SHOW CREATE TABLE <your_table_name>

nella shell MySQL per determinare se il campo di destinazione accetta NULL. Senza contesto (lo stai eseguendo come puro SQL o ti connetti al database da qualche programma client in un'altra lingua?) è difficile fornire la soluzione esatta, ma potresti avere qualcosa del genere:

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

dove 'NULL' è semplicemente una stringa senza un significato speciale, quando quello che intendi è

INSERT <your_table_name>
SELECT first_name, NULL, last_name

Ecco un'illustrazione:

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

Un po' una sciocchezza - mi scuso se non serve ...