2011-11-03 61 views
2

我有一个要求将字面值'NULL'作为默认值插入nvarchar列。但是,当我插入记录时,默认情况下是以db NULL而不是文字'NULL'的形式出现。有人能告诉我我要去哪里吗?如何将值'NULL'输入到SQL Server的nvarchar列中?

+1

顺便说一句,将列默认为“NULL”而不是“NULL”的目的是什么?这听起来像是一个值得怀疑的决定。 –

+0

@djacobson - 我们发送'NULL'的要求是因为我们发送的数据被另一个需要看到文本NULL而不是空标签的应用程序使用。 – VKarthik

+0

啊,你能做什么?很公平。 :S –

回答

3

注意引号:

INSERT INTO yourtable (varcharfield) VALUES ('NULL'); // string null 
INSERT INTO yourtable (varcharfield) VALUES (NULL); // actual null 
+3

我认为OP希望字段的默认值是字符串'NULL',而不是只在'INSERT'语句中插入该值。 – 2011-11-03 19:03:04

5

所以,你要“空”的实际要插入的字符串?尝试是这样的:

create table NullTable 
(
    nvarchar(100) not null default 'NULL', 
    .... -- your other fields 
) 

编辑:这里是一个完整的解决方案

create table InsertNull 
(
    Nullfield nvarchar(100) not null default 'NULL', 
    someint int not null 
) 
go 

insert into insertnull(someint) 
select 20 

select * 
from InsertNull 
+0

鲨鱼 - 我有一张桌子有相同的设置。在同一个例子中,我们的表格包含两个字段field1,默认值为'NULL',field2 INT。如果我运行查询说 - 插入到空表(field1)选择20然后field1仍然显示为NULL DB值 – VKarthik

+0

@VKarthik检查我的编辑。我只是运行这个,它在结果查询中显示字符串'NULL'。 – 2011-11-03 19:43:51

+0

@VKarthik你是否希望在列中存储单引号?因为鲨鱼有什么默认的字符串是NULL而不是DB'NULL'。 – norlando

1

如果在代码中设置默认,而不是设计师应该工作。

ALTER TABLE [myTable] ADD DEFAULT ('NULL') FOR [TextColumn] 
相关问题