首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向表中添加列(如果该列尚不存在

向表中添加列(如果该列尚不存在
EN

Stack Overflow用户
提问于 2012-01-15 23:20:48
回答 6查看 299.3K关注 0票数 220

我想为MS SQL Server编写一个将列添加到表中的查询。但我不希望在运行/执行以下查询时显示任何错误。

我正在使用这种查询来添加表...

代码语言:javascript
运行
复制
IF EXISTS (
       SELECT *
       FROM   sys.objects
       WHERE  OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
              AND TYPE IN (N'U')
   )

但是我不知道如何为列编写这个查询。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-15 23:24:38

您可以通过使用sys.columns表io sys.objects来使用类似的结构。

代码语言:javascript
运行
复制
IF NOT EXISTS (
  SELECT * 
  FROM   sys.columns 
  WHERE  object_id = OBJECT_ID(N'[dbo].[Person]') 
         AND name = 'ColumnName'
)
票数 256
EN

Stack Overflow用户

发布于 2013-06-21 20:04:20

代码语言:javascript
运行
复制
IF COL_LENGTH('table_name', 'column_name') IS NULL
BEGIN
    ALTER TABLE table_name
    ADD [column_name] INT
END
票数 114
EN

Stack Overflow用户

发布于 2012-01-15 23:40:09

另一种选择。我更喜欢这种方法,因为它的编写更少,但这两种方法完成的是同一件事。

代码语言:javascript
运行
复制
IF COLUMNPROPERTY(OBJECT_ID('dbo.Person'), 'ColumnName', 'ColumnId') IS NULL
BEGIN
    ALTER TABLE Person 
    ADD ColumnName VARCHAR(MAX) NOT NULL
END

我还注意到,您正在查找表存在的位置,显然就是这样

代码语言:javascript
运行
复制
 if COLUMNPROPERTY( OBJECT_ID('dbo.Person'),'ColumnName','ColumnId') is not null
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8870802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档