Sql Server中判断表、列不存在则创建的方法

一、Sql Server中如何判断表中某列是否存在

首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下:

比如说要判断表A中的字段C是否存在两个方法:

第一种方法 

IF EXISTS (
 SELECT 1 FROM SYSOBJECTS T1
 INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID
 WHERE T1.NAME='A' AND T2.NAME='C'
 )
 PRINT '存在'
 ELSE
 PRINT '不存在' 

第二种方法,短小精悍,可谓精典 

IF COL_LENGTH('A', 'C') IS NOT NULL
  PRINT N'存在'
ELSE
  PRINT N'不存在' 

方法一:  

select  *  from  syscolumns  where  id=object_id('表名')  and  name='列名' 

说明:存在则返回此列的一条说明记录,不存在返回空;

方法二: 

select  count(*)  from  sysobjects  a,syscolumns  b where a.id=b.id and b.name='flag1' and a.type='u'  and  a.name='T_Pro_ProductClass' 

说明:存在返回1,不存在则返回0

二、Sql Server中判断表、列是否存在,如果不存在则创建

一、表不存在则创建:

if not exists (select * from sysobjects where id = object_id('mytab')
and OBJECTPROPERTY(id, 'IsUserTable') = 1)
create table mytab
(
  id int,
  age int ,
  name varchar(max),
  primary key (id,age)
)
go

二、列不存在则创建。

if not exists (select * from syscolumns where id=object_id('mytab') and name='columnname') alter table [mytab] add columnname nvarchar(max)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • sql server判断数据库、表、列、视图是否存在

    1 判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] 2 判断表是否存在 if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [表名] 3 判断存储过程是否存在 if exist

  • sql server中判断表或临时表是否存在的方法

    1.判断数据表是否存在 方法一: use yourdb; go if object_id(N'tablename',N'U') is not null print '存在' else print '不存在' 例如: use fireweb; go if object_id(N'TEMP_TBL',N'U') is not null print '存在' else print '不存在' 方法二: USE [实例名] GO IF EXISTS (SELECT * FROM dbo.SysObjec

  • sqlserver 各种判断是否存在(表名、函数、存储过程等)

    sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:其中某些状态位可由用户使用 sp_dboption(read only.dbo use only.single user 等)进行设置: 1 = autoclose:使用 sp_dboption 设置. 数据库完全关闭,其资源在最后一个用户注销后释放.4 = select into/bulkcopy:使用 sp_dboption 设置.允许使用 Select INTO 语句和快速大容量复制.8 = tru

  • Sql Server中判断表、列不存在则创建的方法

    一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法  IF EXISTS ( SELECT 1 FROM SYSOBJECTS T1 INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID WHERE T1.NAME='A' AND T2.NAME='C' ) PRINT '存在' ELSE PRINT '不存在' 第二种方法,短小

  • 显示 Sql Server 中所有表中的信息

    显示某个Sql Server某个数据库中所有表或视图的信息 sql server 2000 与 2005 不同 差别在于 红色字部分以下语句为获取所有表信息,替换绿色黑体字"U"为"V"为获取所有视图信息. Sql Server 2000 版本 SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,systypes.name AS DATA_TYPE,

  • SQL Server中聚合历史备份信息对比数据库增长的方法

    很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式. 通常来讲,一个运维良好的数据库都需要做定期基线(baseline),有了基线才会知道什么是正常.一个简单的例子例如,一些人的血压平常偏低,那么80的低压对他来说就是不正常了.但现实情况是大多数系统并没有采集基线的习惯,因此在需要规划空间想要看历史增长时,就没有过去精确的数据了. 一个解决办法就是通过查看历史备份的大小来看过

  • 深入理解Sql Server中的表扫描

    很久以前我们在写sql的时候,最怕的一件事情就是sql莫名奇妙的超级慢,慢的是撸一管子回来,那个小球还在一直转...这个着急也只有当事人才明白,后来听说有个什么"评估执行计划",后来的后来才明白应该避免表扫描... 一:表扫描 1.现象 "表扫描"听起来很简单,不就是一行一行的扫嘛,你要说"执行计划"的话,我也会玩,为了更可观,我build一个表,再插入三行数据,如下图: 上面的Person我是一个索引都没建,然后where一下,看看表扫描是啥样

  • Sql Server中一个表2个字段关联同一个表(代码解决)

    复制代码 代码如下: select a.man_id,man_name,d.sex_name,zw_name,c.money   from man as a         left join zw as b on a.zw_id=b.zw_id         left join zw as c on a.man_id=c.man_id   -- 同时关联zw字段,通过表别名区别开      left join xb as d on c.sex_id=d.sex_id

  • SQL Server中检查字段的值是否为数字的方法

    最近有一个项目,需要检查某个字符型字段的值是否为数字,由于数据行是海量,所以需要通过SQL语句来筛查,这里拿来做个备忘. 用到的函数为IsNumeric,具体语句如下所示: 复制代码 代码如下: SELECT * FROM 表 WHERE IsNumeric(需要检查的字段名) = 0 ISNUMERIC  确定表达式是否为一个有效的数字类型.       语法    ISNUMERIC   (   expression   )       参数    expression       要计算的

  • SQL SERVER先判断视图是否存在然后再创建视图的语句

    如果我们的语句为: IF NOT EXISTS(SELECT 1 FROM sys.views WHERE name='Report_IndividualTicket') BEGIN create view Report_IndividualTicket as SELECT Ticket.TicketNumber, Ticket.TicketID, GisProcess.StageName, Content.DtReceived, Content.ContentText FROM (GisPro

  • SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例

    SQL Server判断语句(IF ELSE/CASE WHEN ) 执行顺序是 – 从上至下 – 从左至右 --,所当上一个条件满足时(无论下面条件是否满足),执行上个条件,当第一个条件不满足,第二个条件满足时,执行第个二条件 1.IF ELSE 不能用在SELECT中,只能是块,比如: IF - BEGIN -(代码块) END ELSE (注意这里没有ELSE IF,要实现只能在下面的块中用IF判断) BEGIN -(代码块) END 列: declare @num int --定义变量

  • Sql Server中实现行数据转为列显示

    目录 1.效果如下 2.解决方案 3.代码如下 场景:行数据的某列值想作为字段列显示 1.效果如下 2.解决方案 使用pivot进行行转列,以及结合分组 3.代码如下 select * from( select DeptName,InputCode from FWD_Department group by DeptName,InputCode ) as a pivot( max(InputCode) for DeptName in([随访中心],[全院],[家庭化产房],[妇科二],妇科一) )

随机推荐