【问题标题】:Inserting null into char(1)将 null 插入 char(1)
【发布时间】:2010-09-20 21:06:47
【问题描述】:

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

有时记录在该字段中没有任何内容,因此我设置了 NULL。这会导致 Data too long for column 错误。我不想只放 ' ' 因为那只留下一个空格。

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 只有我一个人对为什么将其标记为“newbler”感到困惑吗?
  • 不,我也很困惑 :)
  • 新手不是像“新手”吗?哈哈哈

标签: mysql insert null


【解决方案1】:

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

如果可以,请运行

SHOW CREATE TABLE <your_table_name>

在 MySQL shell 中确定您的目标字段是否接受 NULL。没有上下文(您是作为纯 SQL 运行,还是从其他语言的某个客户端程序连接到数据库?)很难提供准确的解决方案,但您可能会遇到这样的情况:

INSERT <your_table_name>
SELECT first_name, 'NULL', last_name

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

INSERT <your_table_name>
SELECT first_name, NULL, last_name

这是一个插图:

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

有点平局 - 如果没有用,请道歉......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多