当SQL中的值为空时,如何跳过INSERT上的列条目?

时间:2011-10-07 18:09:18

标签: sql sql-server

我在数据库中插入了很多行,而某些列的空白

如何在不为这些空白字段指定虚拟值的情况下插入?

       1 INSERT Leads VALUES('name', 'cityName', 5, 'anotherValue')
       2 INSERT Leads VALUES('name', 'cityName',  , 'anotherValue')
       3 INSERT Leads VALUES('name', 'cityName', 2, 'anotherValue')
       4 INSERT Leads VALUES('name', 'cityName', 9, 'anotherValue')

我的问题在于第2行,其中城市名称与另一个值之间存在空白值。理想情况下,我希望值保持为空。

感谢任何帮助。

谢谢!

7 个答案:

答案 0 :(得分:12)

您应该始终明确指定要插入的列 - 然后您可以省略您不想要的列:

INSERT INTO dbo.Leads(Col1, Col2, Col4) VALUES('name', 'cityName', 'anotherValue')

(在此示例中省略Col3

答案 1 :(得分:8)

告诉它插入一个null:

    INSERT Leads VALUES('name', 'cityName', 5, 'anotherValue')
    INSERT Leads VALUES('name', 'cityName', null , 'anotherValue')
    INSERT Leads VALUES('name', 'cityName', 2, 'anotherValue')
    INSERT Leads VALUES('name', 'cityName', 9, 'anotherValue')

答案 2 :(得分:2)

您必须找到这些字段并插入NULL。正则表达式/,\ s *,/应该标识间隙。如果您正在运行linux / mac,请尝试:

perl -pi -e 's/,\s*,/, NULL,/g' path/to/file.sql

答案 3 :(得分:1)

您可以使用的另一种方法:

INSERT Leads VALUES('name', 'cityName', 5, 'anotherValue')
INSERT Leads VALUES('name', 'cityName', DEFAULT, 'anotherValue')
INSERT Leads VALUES('name', 'cityName', 2, 'anotherValue')
INSERT Leads VALUES('name', 'cityName', 9, 'anotherValue')

这也适用于具有默认值的列和\或不能插入值的列(如TIMESTAMP)

答案 4 :(得分:0)

如果没有值,您需要使用null

答案 5 :(得分:0)

对于插入语句 如果字段接受Null,则使用Values(Null,...)

如果field有(,not null)要求,并且对于不希望Null显示的字段,请使用Values('',...)备注字段。

答案 6 :(得分:-1)

我遇到了现有应用程序的问题,该应用程序在prod中工作但在新的本地安装上没有。

必须像这样配置Mysql:

sql-mode=MYSQL40

然后它将接受如下行:

 INSERT Leads VALUES('name', 'cityName',  , 'anotherValue')