我想在master数据库中自己执行查询
IF OBJECT_ID(N'DB1.dbo.T_table1', N'U') IS NOT NULL
AND COLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1'),
'KEY_value','AllowsNull') IS NOT NULL
SELECT 'TRUE' AS COLUMNSTATUS
ELSE
SELECT 'FALSE' AS COLUMNSTATUS
但它不起作用?给我一个建议。
答案 0 :(得分:1)
从master测试时,我从
获得了预期的NULLCOLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1 '),' KEY_value”, 'AllowsNull'),
但是当在要测试的数据库上运行它时,它会按预期返回1/0。
似乎COLUMNPROPERTY在正在执行的数据库上运行。
编辑:
从主人那里试试
DECLARE @RetVal TABLE(
Val INT
)
INSERT INTO @RetVal (Val) EXECUTE ('USE DB1; SELECT COLUMNPROPERTY(OBJECT_ID(N''DB1.dbo.T_table1''),''Key_Value'',''AllowsNull'')')
SELECT TOP 1 * FROM @RetVal
答案 1 :(得分:0)
您正在检查NULL,但如果该字段存在,COLUMPROPERTY将返回1或0。
尝试:
SELECT CASE COLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1'),
'KEY_value','AllowsNull')
WHEN 0 THEN 'Column exists and does not allow nulls'
WHEN 1 THEN 'Column exists and allows nulls'
ELSE 'Column not found'
END