我有一个sql server nvarchar字段,其中包含空字符串的“默认值或绑定”。它也恰好是一个非空字段。
这是否意味着没有默认值,或者它是没有字符的字符串的默认值。
如果我没有插入值,是插入空字符串还是失败并显示“not null”错误?
答案 0 :(得分:3)
默认为空(空)字符串。
如果您没有提供值,插入将成功,值将为空,不为空。
答案 1 :(得分:3)
与(假设数据是相关的col)相同:
create table #t (id int, data varchar(100) not null default(''))
所以:
insert into #t (id) values (1)
insert into #t (id,data) values (2,default)
insert into #t (id,data) values (3, 'allowed')
select * from #t
将返回
1 2 3 allowed
和..
insert into #t (id,data) values (1, null)
-- will error
答案 2 :(得分:2)
如果您有一个真正的空字符串作为默认值,那么它将使用0长度字符串自动填充。
你应该小心确保它是一个0长度的字符串,但不是没有。例如,如果您在表格构建器gui中查找SSMS并且它显示“默认值或绑定”的空白,则表示没有默认值,如果未填充插入,则插入将失败。如果你想让它有一个0长度的字符串,用''填充它(两个单引号,中间没有任何内容。)
答案 3 :(得分:0)
列的默认值就是 - 当您不为列提供该值时,sql server将放置该值。列中的值将为空字符串。不会发生非null错误