18

这是我在 SQL Server 中的 sql:

SELECT user_Name ,user_pass ,user_hometown FROM user_baseinfo   

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

4

4 回答 4

25
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使用。

于 2013-07-18T08:58:08.747 回答
18

用例

select case 
          when user_Name is null then "default value" 
          else user_name 
       end  
from table
于 2013-07-18T08:44:21.063 回答
3

您想使用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'
)

是该网站的链接。

于 2013-07-18T08:45:14.613 回答
3

对于现有行(假设列是varchar

ALTER TABLE TableName ADD CONSTRAINT ConstraintName DEFAULT N'Default Value' FOR ColumnName;
于 2013-07-18T08:47:06.000 回答