这是我在SQL服务器SQL:SQL Server如何设置默认值时,该列是空
SELECT user_Name ,user_pass ,user_hometown FROM user_baseinfo
有时列可以为空。当它是,我想用默认值替换它。
这是我在SQL服务器SQL:SQL Server如何设置默认值时,该列是空
SELECT user_Name ,user_pass ,user_hometown FROM user_baseinfo
有时列可以为空。当它是,我想用默认值替换它。
使用情况
select case
when user_Name is null then "default value"
else user_name
end
from table
对于现有的行(假设列是varchar
)
ALTER TABLE TableName ADD CONSTRAINT ConstraintName DEFAULT N'Default Value' FOR ColumnName;
SELECT
IsNull(user_Name, 'Unknown Name') AS user_Name,
IsNull(user_pass, 'Unknown Pass') AS user_pass,
IsNull(user_hometown, 'Unknown Hometown') AS user_hometown
FROM user_baseinfo
注意虽然,IsNull
具有第二参数类型的优先级。如果第一个参数中的列的类型比默认值的类型短,那么这可能会导致不希望的切割缺省值。在这种情况下Coalesce
是更好的选择。
下面是表示IsNull
Coalesce
和之间的差异的例子:
CREATE TABLE #Sample (Value1 varchar(100), Value2 char(3));
INSERT INTO #Sample (Value1, Value2)
VALUES
('AAA', 'AAA'),
('BBB', 'BBB'),
('CCC', 'CCC'),
(NULL, NULL);
SELECT
IsNull(Value1, 'Default') AS Value1,
IsNull(Value2, 'Default') AS Value2
FROM #Sample;
SELECT
Coalesce(Value1, 'Default') AS Value1,
Coalesce(Value2, 'Default') AS Value2
FROM #Sample;
见,当使用Default
精简到Def
IsNull
。
非常感谢你 – user2594582
@ user2594582 NP :) – zxc
能短:ISNULL(VAL1,VAL2),并通过这种方式,将尊重列规范,因此从该选择插入将不会导致替换时间过长。 –