代码之家  ›  专栏  ›  技术社区  ›  Scott Weinstein

可以将可为NULL的列强制转换为非NULL列吗?

  •  3
  • Scott Weinstein  · 技术社区  · 15 年前

    在SQL2005/8中,我希望将select查询中的一列转换为NOTNULL列。

    coalease() isnull() ,虽然功能很好,但不是我想要的。如果任何数据为空,我希望select抛出一个错误。

    这可能吗?

    [更新]

    3 回复  |  直到 15 年前
        1
  •  5
  •   casperOne    14 年前

    这是一个奇怪的要求,但我认为这满足了它:

    DECLARE @TABLE TABLE
    (
        ID INT IDENTITY(1,1) NOT NULL,
        Val VARCHAR(100) NULL
    )
    
    INSERT INTO @TABLE(Val)
    SELECT 'Hello' 
    UNION SELECT 'World' 
    UNION SELECT NULL --Remove this line to prevent failure
    
    SELECT 
      ID, 
      CASE WHEN Val IS NULL THEN CAST(1/0 AS VARCHAR) ELSE Val END AS ValCheck 
    FROM @TABLE
    
        2
  •  7
  •   Remus Rusanu    15 年前

    约束 . SELECT语句不强制执行约束。仅在插入/更新/删除数据期间强制执行约束。如果需要强制执行约束,请通过ALTERTABLE在表上声明约束。。。添加

    如果要返回非null数据,请使用诸如ISNULL或COALESCE之类的null转换函数。

        3
  •  0
  •   Tordek    15 年前

    $result = db.query("SELECT count(1) FROM table WHERE column_that_should_not_be_null IS NULL")
    assert($result = 0);
    

    NULL ,当你做 ALTER TABLE ... SET NOT NULL