将null插入char(1)

Phi*_*lip 2 mysql null insert

我正在创建一个INSERT脚本,我遇到了一个问题.有一个中间的初始字段是char(1)

有时记录在该字段中没有任何内容,所以我放了一个NULL.这会导致数据太长而不会出现列错误.我不想只是把''留下空白.

还有另一种方法吗?

mar*_*ton 6

听起来您可能正在尝试将字符串'NULL'插入char(1)字段而不是SQL NULL,并且您启用了严格的SQL模式,这可以防止将其截断为N.

如果你能,请运行

SHOW CREATE TABLE <your_table_name>
Run Code Online (Sandbox Code Playgroud)

在MySQL shell中确定您的目标字段是否接受NULL.没有上下文(您是将它作为纯SQL运行,还是从另一个客户端程序中连接到数据库?)很难提供确切的解决方案,但您可能会遇到以下情况:

INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
Run Code Online (Sandbox Code Playgroud)

其中'NULL'只是一个没有特殊含义的字符串,当你想要的是什么时

INSERT <your_table_name>
SELECT first_name, NULL, last_name
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

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
Run Code Online (Sandbox Code Playgroud)

一点点 - 如果没用就道歉......