SQL:测试列是否具有"Not Null"属性

Abo*_*ort 6 sql sql-server sql-server-2000 sql-server-2008

是否有一个简单的查询来返回特定列是否允许空值?
我想将此更改为数据库升级脚本的一部分.

或者,改变它是否更好,即使它已经设置好了?

编辑:这是针对SQL Server(需要支持2000或更高版本)

Mar*_*ith 19

任何特定的RDBMS?

在SQL Server中

use master

SELECT COLUMNPROPERTY( OBJECT_ID('dbo.spt_values'),'number','AllowsNull')
Run Code Online (Sandbox Code Playgroud)

或者(更标准)

select IS_NULLABLE 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_SCHEMA='dbo' 
      AND TABLE_NAME='spt_values' 
      AND COLUMN_NAME='number'
Run Code Online (Sandbox Code Playgroud)