我在数据库中插入了很多行,而某些列的空白 。
如何在不为这些空白字段指定虚拟值的情况下插入?
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行,其中城市名称与另一个值之间存在空白值。理想情况下,我希望值保持为空。
感谢任何帮助。
谢谢!
答案 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')