【问题标题】:How to return a default value when a column value is null in SQLSQL中列值为空时如何返回默认值
【发布时间】:2019-06-08 14:02:41
【问题描述】:

SQL中列值为空时如何返回默认值

【问题讨论】:

  • 没有上下文,很难提供有用的建议。而且我认为您将“默认”值与“空值”混淆了。将 NULL 值作为列插入行中不会以某种方式促使 db 引擎用分配给该列的默认值替换该 NULL。如果您的问题基于插入表格的应用程序中的代码,并且您想要刷新显示的内容,那么您需要为其他人提供该上下文。
  • 您可以在设计表格时设置默认值。有空值时自动显示默认值
  • @MdFaridUddinKiron 当 INSERT 命令未明确提供列的值时,不会将默认值插入列中。

标签: sql sql-server


【解决方案1】:

您可以使用 COALESCE。更多信息请参考https://www.sqlshack.com/using-the-sql-coalesce-function-in-sql-server/

SELECT COALESCE (NULL,'A')

【讨论】:

    【解决方案2】:

    IsNull 在值为 null 并且您希望返回默认值时使用。

    Select IsNull(YourColumn, defaultvalue) 
    i.e. 
    Select IsNull( CandidateName , ''),  -This is string column and return default value ''
           IsNull(CandidateSalaryExpected, 0),  --This is Integer/Double/Numeric column and return default value 0
           IsNull(MaritalStatus , 0)  --0 - marital means unmarried, 1 means married. This is boolean value
    

    您也可以使用 Coalesce 值。检查以下链接。

    SQL Select Return Default Value If Null

    【讨论】:

      【解决方案3】:

      当找到任何NULL 值时,您似乎正在尝试使用默认值来填充您的列。

      你可以试试这个:

       SELECT COALESCE([dbo].YourTableName.[YourColumnName],'Default Value When Null Encountered') AS YourTableAlias  FROM [dbo].[YourTable]
      

      用真实样本测试:

      在下面查看我的Table Column,其中一些FlatNameNULL

      找到NULL时的默认值真实查询:

      SELECT FlatId,COALESCE([dbo].[Flat].[FlatName],'Default Value When Null Encountered') AS FlatName, FlatDescription  FROM [dbo].[Flat]
      

      查询输出:

      【讨论】:

        【解决方案4】:

        如果没有提供默认值,您可以设计您的表格以添加默认值,而不是返回默认值。见下例

        CREATE TABLE DemoTable
        (
        ID INT,
        Name VARCHAR(100),
        RecordAddedOn DATETIME DEFAULT GETDATE()
        )
        

        您可以查看以下链接以更好地了解默认约束。 Default Constraint

        但是,如果要返回默认值,可以使用 ISNULL(ColumnName, 'Default Value')

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-22
          • 1970-01-01
          • 2019-04-20
          • 1970-01-01
          • 2019-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多