可以将可为空的列转换为NOT NULL列吗?

Sco*_*ein 4 sql-server null

在SQL 2005/8中,我希望将select查询中的列转换为NOT NULL列.

coalease()并且isnull(),虽然精功能,是不是我要找的.我希望select抛出一个错误,任何数据都是NULL.

这可能吗?

[更新]显然,最好的方法是修改源表,不幸的是,在这种情况下,它不是一个(成本效益)选项.

Rem*_*anu 7

你要求的东西不存在.

NOT NULL是一个约束.SELECT语句不强制执行约束.约束仅在INSERT/UPDATE/DELETE数据期间强制执行.如果需要强制执行约束,请通过ALTER TABLE ... ADD ...在表上声明约束.

如果要返回非空数据,请使用空转换函数,如ISNULL或COALESCE.


Mef*_*eff 5

一个奇怪的请求,但我认为这符合它:

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
Run Code Online (Sandbox Code Playgroud)