Wygląda na to, że próbujesz wstawić ciąg 'NULL'
do char(1)
zamiast wartości NULL SQL i masz włączony ścisły tryb SQL, co zapobiega obcinaniu tego do N
.
Jeśli możesz, uruchom
SHOW CREATE TABLE <your_table_name>
w powłoce MySQL, aby określić, czy pole docelowe akceptuje wartości NULL. Bez kontekstu (czy uruchamiasz to jako czysty SQL, czy łączysz się z bazą danych z jakiegoś programu klienckiego w innym języku?) trudno jest podać dokładne rozwiązanie, ale możesz mieć coś takiego:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
gdzie 'NULL' jest po prostu łańcuchem bez specjalnego znaczenia, kiedy to, co chcesz, to
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Oto ilustracja:
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
Trochę punt - przepraszam, jeśli nie ma sensu ...