【问题标题】:check if fields of a sqlserver table are empty/full in a computed field检查计算字段中 sqlserver 表的字段是否为空/满
【发布时间】:2019-05-08 11:52:18
【问题描述】:

我需要在 sqlserver 表中添加一个计算字段,以显示该表的其他字段是否为空或已满(全部,其中一些,无)

该字段应包含:

0=all the fields are empty(null)
1=almost one field has been filled
2=all fields contains something

实现它最有效的方法是什么?

【问题讨论】:

  • 这似乎是一个更好的视图选择;您只能使用标量函数来实现这一点,这会降低性能。您还标记了 SQL Server 2005;几年不支持了,你真的还在用吗?我建议现在升级已经过去了,所以你应该尽快升级。

标签: sql-server sql-server-2005 database-trigger computed-field


【解决方案1】:

可能最简单的方法是使用 case ...when 语句对所有空列求和,然后将其与总列数进行比较:

CREATE TABLE [Foo] (
[Col1] int NULL,
[Col2] int NULL,
[Col3] int NULL,
[ColumnDensity] AS CASE 
       CASE WHEN [Col1] IS NULL THEN 0 ELSE 1 END + 
       CASE WHEN [Col2] IS NULL THEN 0 ELSE 1 END + 
       CASE WHEN [Col3] IS NULL THEN 0 ELSE 1 END 
    WHEN 0 /* No columns are NOT NULL */ THEN 0 
    WHEN 3 /* All 3 columns are NOT NULL */ THEN 2 
    ELSE /* Some columns are NULL and some are NOT NULL*/ 1 END
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2012-06-21
    • 2012-03-01
    • 2011-05-13
    相关资源
    最近更新 更多