Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn null vào char (1)

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 ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql THAM GIA TRÁI với COUNT

  2. MySQL SELECT WHERE datetime khớp với ngày (và không nhất thiết phải là thời gian)

  3. Thứ tự các trường của chỉ mục nhiều cột trong MySQL Matter

  4. Mệnh đề SQL - WHERE với JOIN

  5. Lỗi TypeScript khi sử dụng Op.between trong Sequelize with Dates