Zdá se, že se možná pokoušíte vložit řetězec 'NULL'
do char(1)
místo SQL NULL a máte povolen přísný režim SQL, který zabraňuje zkrácení na N
.
Pokud můžete, spusťte
SHOW CREATE TABLE <your_table_name>
v prostředí MySQL, abyste zjistili, zda vaše cílové pole přijímá hodnoty NULL. Bez kontextu (spouštíte to jako čisté SQL nebo se připojujete k databázi z nějakého klientského programu v jiném jazyce?) je obtížné poskytnout přesné řešení, ale můžete mít něco takového:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
kde 'NULL' je jednoduše řetězec bez zvláštního významu, když to, co zamýšlíte, je
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Zde je ilustrace:
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
Trochu puntík - omlouvám se, pokud k ničemu není...