找出列是否为NULL

cds*_*sln 12 sql t-sql sql-server

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

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

 ALTER TABLE [dbo].[aud]
 ALTER COLUMN [actname] nvarchar(50) NULL
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

小智 10

使用COLUMNPROPERTY获取列属性.你可以写一些类似的东西

SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull';
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问此 链接


El *_*oco 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'
Run Code Online (Sandbox Code Playgroud)

会告诉你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
Run Code Online (Sandbox Code Playgroud)

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