如何测试列定义是否允许空值?

Dav*_*rke 7 sql-server

我有一个包含大约 3000 行的表,我需要修改列定义以允许空值。我有一个将执行更改的更改脚本,但我希望能够重新运行该脚本,以便仅在列定义尚未更改时才会发生更改。如何测试列定义以确定该列是 NULL 还是 NOT NULL?

Aar*_*and 9

你也可以看看sys.columns.is_nullable...


msi*_*i77 7

标准解决方案:

select IS_NULLABLE from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME ='table' and COLUMN_NAME ='column'
Run Code Online (Sandbox Code Playgroud)

  • @David 我通常对 INFORMATION_SCHEMA 视图提出警告。是的,它们更标准,但是如果您从 SQL Server 切换到 Oracle,您是否认为元数据查询将成为您最大的麻烦?此外,微软承认这些视图并不完整(它们没有像目录视图那样针对新功能进行更新),它们甚至偶尔会暗示它们是不正确的。背景:http://web.archive.org/web/20121126175858/http://connect.microsoft.com/SQLServer/feedback/details/686118/doc-information-schema-tables-gives-improper-warning-about-模式 (2认同)