Có vẻ như bạn đang cố chèn chuỗi 'NULL'
vào char(1)
chứ không phải là SQL NULL và bạn đã bật chế độ SQL nghiêm ngặt, điều này ngăn việc này bị cắt ngắn thành N
.
Nếu bạn có thể, hãy chạy
SHOW CREATE TABLE <your_table_name>
trong MySQL shell để xác định xem trường đích của bạn có chấp nhận NULL hay không. Không có ngữ cảnh (bạn đang chạy điều này dưới dạng SQL thuần túy hay kết nối với cơ sở dữ liệu từ một số chương trình khách trong một ngôn ngữ khác?), Thật khó để đưa ra giải pháp chính xác, nhưng bạn có thể gặp một số trường hợp như sau:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
trong đó 'NULL' chỉ đơn giản là một chuỗi không có ý nghĩa đặc biệt, khi những gì bạn dự định là
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Đây là một minh họa:
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
Một chút khó khăn - xin lỗi nếu không sử dụng ...