我正在创建一个INSERT脚本,我遇到了一个问题.有一个中间的初始字段是char(1)
有时记录在该字段中没有任何内容,所以我放了一个NULL.这会导致数据太长而不会出现列错误.我不想只是把''留下空白.
还有另一种方法吗?
听起来您可能正在尝试将字符串'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)
一点点 - 如果没用就道歉......
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |