首页 > 数据库 >[SQL Server 2008R2] 有关于判断表、字段、存过等元素是否存在相关SQL写法

[SQL Server 2008R2] 有关于判断表、字段、存过等元素是否存在相关SQL写法

时间:2023-04-26 09:56:24浏览次数:32  
标签:index begin end -- 2008R2 存过 SQL test select

表相关

普通表

  查询普通表是否存在可以使用object_id函数,下面的例子是查询表“t_test”是否存在之后从而进行其他的DLL操作:

if object_id('t_test') is not null
begin
    -- 如果表存在 这段里面写相关逻辑
    select 1 
end

 

临时表

  临时表同样可以用object_id但是表名要记得加上库名和表空间:

if object_id('tempdb..#temp') is not null
begin
    select 1
end

  或者

if exists(select 1 from tempdb..sysobjects where name like '#temp%')
begin
    -- 存在 #tempXXXX 表
    select 1
end

以上这个条件自行发挥,我这边使用的是like语句,判断的是只要是#temp开头的临时表存在。

字段

  有一个很精简的写法,用COL_LENGTH函数,用法:COL_LENGTH('表名','字段名')

if COL_LENGTH('d_test', 'col1') IS NULL
begin
    -- 字段在 d_test 存在
    select 1
end

索引

  索引这边比较麻烦,但是也有办法。

  可以使用存过sp_helpindex

declare @index table (
    index_name varchar(500),
    index_des varchar(5000),
    index_keys varchar(500)
)
insert into @index
exec sp_helpindex 't_test'

上面这段代码是将t_test表索引、触发器结构罗列出来放在定义的变量表@index中了。这时候我们查询这个表会得到结果:

这样查询索引存不存在就好办了

if not exists(select 1 from @index where index_name = 'idx_test')
begin
    -- 索引存在
    select 1
end

 

 

 


 

标签:index,begin,end,--,2008R2,存过,SQL,test,select
From: https://www.cnblogs.com/puqiong233/p/17352384.html

相关文章

  • MySQL数据类型
     DB哥MySQL高级教程-系统学习MySQL共149课时关注微信公众号免费学:【DB哥】文末有MySQL高级课程目录1、MySQL数据类型MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 1.2、mysql中编码和字符在mysql中,一个中文汉字所占的字节数与编码格式有......
  • MySQL索引详解
     DB哥MySQL高级教程-系统学习MySQL共149课时加我微信公众号免费学:DB哥文末有MySQL高级课程目录前言因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引,顺带简单讲述其他引擎。希望小伙伴们能通过这片文章对mysql的索引有更加清晰的认识,废话不多......
  • mybatis where标签动态sql问题
    使用where标签注意事项:where标签只会去掉第一个多出来的and和or,使用where标签时要把and放到前面这种情况下生成的SQL更干净,更贴切,不会在任何情况下都有where1=1这样的条件。<selectid="search"resultType="com.example.springweb2.pojo.Member"> selectid,name,a......
  • 权限模型与建表及SQL语句编写
    权限模型RBAC权限模型​RBAC权限模型(Role-BasedAccessControl)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。 准备工作      菜单表实体类}  建表及SQL语句编......
  • SQL Server实现group_concat功能的详细实例
    目录一、实现二、原理分析2.1、FOR XML PATH的作用2.2、STUFF函数2.2.1、STUFF函数在本SQL的作用2.2.2、STUFF函数语法2.3、sql语分分析2.3.1、一个简单的group by2.3.2、在select语句后面加上子查询2.3.3、去掉子查询结果集的第一个分隔符总结一、实......
  • 监控自建MySQL慢查询日志并上报到企业微信集群
    shell脚本如下#!/bin/bash#设置企业微信机器人webhook地址和机器人名称WEBHOOK_URL="你的WEBHOOK_URL"BOT_NAME="MySQLSlowLogBot"#设置慢日志文件路径和记录已发送行数的文件路径LOG_FILE="/data/mysql/mysql-slow-log.log"SENT_LINE_FILE="/tmp/mysql-slow-log.sent......
  • mysql基础 -- 单表练习
    droptableifexistsemp;createtableemp(empnoint,enamevarchar(50),jobvarchar(50),mgrint,hiredatedate,saldecimal(7,2),commdecimal(7,2),deptnoint)engine=innodbdefaultcharset=utf8;INSERTINTOempVALUES(7369,'SMITH','CL......
  • 【Azure 应用服务】启用 Managed Identity 登录 SQL Server 报错 Managed Identity au
    问题描述在AppService中启用Identity后,使用系统自动生成Identity。使用如下代码连接数据库SQLServer:SQLServerDataSourcedataSource=newSQLServerDataSource();dataSource.setServerName("yoursqlservername.database.chinacloudapi.cn");//Replacewit......
  • 【IT老齐014】阿里Canal实现MySQL异构数据同步
    【IT老齐014】阿里Canal实现MySQL异构数据同步场景商户在后台系统添加数据,消费者需要在前台获取数据。这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据。原始做法:团队A在java代码中新增mysql数据时,调用团队B的接口新增es商品数据。缺点:协......
  • 2.mysql binlog的三种格式及区别
    好文:https://www.cnblogs.com/syw20170419/p/16443105.html 1、三种格式:row、statement、mixed2、区别:row格式文件比较大,statement比较小,row格式保存的是一行一行的数据,statement保存的是sql语句,mixed格式介于二者之间,statement容易丢数据,row格式则不会3、statement容易丢......