SQL Server如何在列为null时设置默认值

时间:2013-07-18 08:43:06

标签: sql-server

这是我在SQL server中的sql:

SELECT user_Name ,user_pass ,user_hometown FROM user_baseinfo   

有时列可以为null。如果是,我想用默认值替换它。

4 个答案:

答案 0 :(得分:16)

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是更好的选择。

以下是显示IsNullCoalesce之间差异的示例:

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时,请{I}向下缩短为Def

答案 1 :(得分:9)

用例

select case 
          when user_Name is null then "default value" 
          else user_name 
       end  
from table

答案 2 :(得分:1)

您想使用DEFAULT关键字。

网站上的例子

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes'
)

Here是该网站的链接。

答案 3 :(得分:1)

对于现有行(假设列为varchar

ALTER TABLE TableName ADD CONSTRAINT ConstraintName DEFAULT N'Default Value' FOR ColumnName;