Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 可以将可为NULL的列强制转换为非NULL列吗?_Sql Server_Null - Fatal编程技术网

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

Sql server 可以将可为NULL的列强制转换为非NULL列吗?,sql-server,null,Sql Server,Null,在SQL2005/8中,我希望将select查询中的一列转换为NOTNULL列 coalease()和isnull(),虽然函数很好,但不是我想要的。如果任何数据为空,我希望select抛出一个错误 这可能吗 [更新] 显然,最好的方法是修改源表,不幸的是,在这种情况下,它不是一个(经济高效的)选项。如果您想在(非sql)代码端抛出错误,您唯一的选择是 $result = db.query("SELECT count(1) FROM table WHERE column_that_should_

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

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

这可能吗

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

如果您想在(非sql)代码端抛出错误,您唯一的选择是

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

如果要将列转换为不接受
NULL
,则在执行
更改表时。。。设置为NOTNULL,您将得到一个错误。

您请求的内容不存在

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


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

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

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

如果查询在空值上出错…这意味着空值不属于。为什么不在列上加一个NOTNULL约束呢?您希望select什么时候抛出一个null?空约束选项听起来是最好的主意,如果错误再次出现,就捕获它。这应该只是一次活动,对吗?您想要什么类型的错误?t-Sql错误?太棒了-绕过语言限制的好方法。