Sqlserver中判断表是否存在

在sqlserver(应该说在目前所有数据库产品)中创建一个资源如表,视图,存储过程中都要判断与创建的资源是否已经存在

在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法

如下:

if   object_id(‘tb_table‘) is not null

print ‘exist‘

else

print‘not exist‘

如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源

object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,

这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:

if   object_id(‘tb_table‘,‘u‘) is not null

print ‘exist‘

else

print‘not exist‘

第二个参数 "u" 就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写

查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子

u  -----------  用户创建的表,区别于系统表(USER_TABLE)

s  -----------  系统表(SYSTEM_TABLE)

v  -----------  视图(VIEW)

p  -----------  存储过程(SQL_STORED_PROCEDURE)

可使用select distinct type ,type_desc from sys.objects 获得全部信息

库是否存在

if exists(select * from master..sysdatabases where name=N‘库名‘)

print ‘exists‘

else

print ‘not exists‘

---------------

-- 判断要创建的表名是否存在

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[表名]‘) and OBJECTPROPERTY(id, N‘IsUserTable‘) = 1)

-- 删除表

drop table [dbo].[表名]

GO

---------------

-----列是否存在

IF COL_LENGTH( ‘表名‘,‘列名‘) IS NULL

PRINT ‘not exists‘

ELSE

PRINT ‘exists‘

alter table 表名 drop constraint 默认值名称

go

alter table 表名 drop column 列名

go

-----

--判断要创建临时表是否存在

If Object_Id(‘Tempdb.dbo.#Test‘) Is Not Null

Begin

print ‘存在‘

End

Else

Begin

print ‘不存在‘

End

---------------

-- 判断要创建的存储过程名是否存在

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[存储过程名]‘) and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)

-- 删除存储过程

drop procedure [dbo].[存储过程名]

GO

---------------

-- 判断要创建的视图名是否存在

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[视图名]‘) and OBJECTPROPERTY(id, N‘IsView‘) = 1)

-- 删除视图

drop view [dbo].[视图名]

GO

---------------

-- 判断要创建的函数名是否存在

if exists (select * from sysobjects where xtype=‘fn‘ and name=‘函数名‘)

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[函数名]‘) and xtype in (N‘FN‘, N‘IF‘, N‘TF‘))

-- 删除函数

drop function [dbo].[函数名]

GO

if col_length(‘表名‘, ‘列名‘) is null

print ‘不存在‘

select 1 from sysobjects where id in (select id from syscolumns where name=‘列名‘) and name=‘表名‘

时间: 2024-10-08 22:21:49

Sqlserver中判断表是否存在的相关文章

sqlserver中判断表或临时表是否存在

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

Sql Server中判断表或者数据库是否存在

Sql Server中判断表或者数据库是否存在 SQL Server中判断数据库是否存在: 法(一): select * From master.dbo.sysdatabases where name='数据库名' 法(二): if db_id('数据库名') is not null drop database ... go create ... SQL Server中判断表对象是否存在: select count(*) from sysobjects where id = object_id(

Sqlserver 中系统表sysobjects、syscolumns以及函数object_id

1.sysobjects 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 sysobjects 重要字段解释: sysObjects ( Name sysname, --object 名称 id int, --object id xtype char(2), -- object 类型 type char(2), -- Object 类型(与xtype 似乎一模一样) uid smallint, -- object 所有者的ID ... --其他的字段不常用到. ) ?

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

一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法  ? 1 2 3 4 5 6 7 8 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 '存在'  E

在sqlserver中创建表

1:在sql语句中,临时表有两类,分别是局部(local)和全局(global)临时表,局部临时表只在其会话(事务)中可见,全局临时表可以被会话(事务)中的任何程序或者 模块访问 2:创建局部临时表 [sql] view plaincopyprint? use db_sqlserver go create table #db_local_table ( id  int, name varchar(50), age int, area int ) use db_sqlserver go creat

sqlserver中判断是数字(会自动将.3识别为0.3)

SQL Server 检测是不是数字型的数据(两种方法) 检测是不是数字型的数据, 两种方法 1. ISNUMERIC ( expression ) 2. PATINDEX ( '%pattern%' , expression ) 1. ISNUMERIC ( expression ) 如果是数字类型则返回 1 ,不是则返回 0 但ISNUMERIC有时是不可靠的,如果你不允许expression包含有任何字母,则会判断错: 如:ISNUMERIC('23e4')返回 1 ISNUMERIC('

SqlServer和Oracle判断表和列是否存在

SqlServer 1.判断表Users是否存在 if object_id(N'Users',N'U') is not null print '存在' else print '不存在' 2.判断表Users中是否存在Name这一列 if exists(select * from syscolumns where id=object_id('Users') and name='Name' collate Chinese_PRC_CI_AI_WS) print '存在' else print '不存

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

在sql server中,如何判断sql server表是否存在呢?下面就将为您详细介绍该方法,供您参考,希望对您加深理解sql server表能起到些许作用 sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:其中某些状态位可由用户使用 sp_dboption(read only.dbo use only.single user 等)进行设置: 1 = autoclose:使用 sp_dboption 设置. 数据库完全关闭,其资源在最后一个用户注销后释

使用Navicat导出可执行脚本 SqlServer数据库某表的部分数据

今天遇到需要导出SqlServer中某表的部分数据,然后导入正式环境的数据库. 于是我想,直接导出可执行的sql脚本,然后放到正式环境上执行就好,然后就是用了Navicat工具辅助导出可执行的sql脚本, 步骤如下: 点击导出 . 然后,选择SQL脚本文件,点击下一步 点击要导出的位置-->点全选 直接下一步-->下一步 导出来之后,,没有表名,小主自己加上的,时间有点赶,就不继续看原因了 记录点点滴滴,虽然微不足道. 原文地址:https://www.cnblogs.com/chenjle/