找出列是否为NULL

时间:2013-06-17 13:47:04

标签: sql sql-server tsql

我的数据库中有一列目前定义为NOT NULL。 我想更新此列以允许NULLs

我有以下脚本来执行此操作但是我想首先检查列是否已经NULL(或NOT NULL),因为它可能先前已更改。

 ALTER TABLE [dbo].[aud]
 ALTER COLUMN [actname] nvarchar(50) NULL

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:9)

使用 COLUMNPROPERTY 获取列属性。你可以写一些像

这样的东西
SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull';

有关详细信息,请访问此link

答案 1 :(得分:7)

select is_nullable from sys.columns c inner join sys.tables t on
t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname'

会给你一个BIT来表示它是否可以为空。

所以你可以像

那样打开它
IF EXISTS(SELECT * from sys.columns c inner join sys.tables t on
    t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname' AND
    is_nullable = 1)
    BEGIN
      --What to do if nullable
    END
ELSE
    BEGIN
      --What to do if not nullable
    END
END

当然,假设表和列完全存在......

答案 2 :(得分:3)

没有必要这样做,因为如果它已经是Nullable,将列从Nullable更改为Nullable将不会产生负面影响。

但是您可以使用此查询执行此操作:

SELECT is_nullable 
FROM sys.columns 
WHERE object_id=object_id('YourTable') AND name = 'yourColumn'