我想为MS SQL Server编写一个将列添加到表中的查询。但我不希望在运行/执行以下查询时显示任何错误。
我正在使用这种查询来添加表...
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)但是我不知道如何为列编写这个查询。
发布于 2012-01-15 23:24:38
您可以通过使用sys.columns表io sys.objects来使用类似的结构。
IF NOT EXISTS (
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[Person]')
AND name = 'ColumnName'
)发布于 2013-06-21 20:04:20
IF COL_LENGTH('table_name', 'column_name') IS NULL
BEGIN
ALTER TABLE table_name
ADD [column_name] INT
END发布于 2012-01-15 23:40:09
另一种选择。我更喜欢这种方法,因为它的编写更少,但这两种方法完成的是同一件事。
IF COLUMNPROPERTY(OBJECT_ID('dbo.Person'), 'ColumnName', 'ColumnId') IS NULL
BEGIN
ALTER TABLE Person
ADD ColumnName VARCHAR(MAX) NOT NULL
END我还注意到,您正在查找表存在的位置,显然就是这样
if COLUMNPROPERTY( OBJECT_ID('dbo.Person'),'ColumnName','ColumnId') is not nullhttps://stackoverflow.com/questions/8870802
复制相似问题