我创建了下表
create table interiors
(id integer, name varchar(20), type varchar(20) default 'baby cot', price integer)
当我没有插入任何'type'值时,通过table的定义,它应该采用默认值。但是当我通过'select'查询获取所有行时,它不会显示默认值。
谁能告诉我这是什么问题?
谢谢&问候,
POOJA。
答案 0 :(得分:1)
默认值适用于默认处于活动状态时插入的数据,而不适用于针对表格的select
语句。
答案 1 :(得分:1)
不确定问题是什么,但这里有一些提示,告诉你发生了什么。
这个T-SQL
declare @T table (ID int, Name varchar(10) default 'DEF')
insert into @T (ID, Name) values (1, 'VAL')
insert into @T (ID, Name) values (2, null)
insert into @T (ID) values (3)
insert into @T (ID, Name) values (4, default)
select ID, Name
from @T
有这个结果
ID Name
----------- ----------
1 VAL
2 NULL
3 DEF
4 DEF
在第1行和第2行中指定列的值时不使用默认约束,但在省略插入列或指定default
时使用它。执行选择时也不会使用它。
如果您想在选择时使用默认值而不是null,则可以使用coalesce
。
select ID, coalesce(Name, 'DEF') as Name
from @T
结果
ID Name
----------- ----------
1 VAL
2 DEF
3 DEF
4 DEF