sqlserver根据字段查表_查找sqlserver数据库中,查询某值所表名和字段名

这篇博客介绍了如何创建一个SQL存储过程,用于查找数据库中特定值存在于哪些表和字段。通过输入值,该存储过程可以在所有用户表中搜索匹配,并返回包含该值的表名和字段名。示例展示了如何使用存储过程查找值'BBQCHICSW',结果显示该值存在于三个不同的表中。此外,还提到了在Navicat等工具中没有直接查询字段名的功能,需要使用SQL查询实现。
摘要由CSDN通过智能技术生成

有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。

前提是要将这个存储过程放在所查询的数据库。

CREATE PROCEDURE [dbo].[SP_FindValueInDB]

(

@value VARCHAR(1024)

)

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

DECLARE @sql VARCHAR(1024)

DECLARE @table VARCHAR(64)

DECLARE @column VARCHAR(64)

CREATE TABLE #t (

tablename VARCHAR(64),

columnname VARCHAR(64)

)

DECLARE TABLES CURSOR

FOR

SELECT o.name, c.name

FROM syscolumns c

INNER JOIN sysobjects o ON c.id = o.id

WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239)

ORDER BY o.name, c.name

OPEN TABLES

FETCH NEXT FROM TABLES

INTO @table, @column

WHILE @@FETCH_STATUS = 0

BEGIN

SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] '

SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') '

SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', '''

SET @sql = @sql + @column + ''')'

EXEC(@sql)

FETCH NEXT FROM TABLES

INTO @table, @column

END

CLOSE TABLES

DEALLOCATE TABLES

SELECT *

FROM #t

DROP TABLE #t

End

例如,要查询值'BBQ CHIC SW',结果如下:

ea0f57edf9c75f205312493fae6b2cc2.png

返回三条记录,说明这个值存在于三个表中,分别为_dts_menudef, g_dts_menudef和g_recipe中,字段名分别为name1, name1, name。

Navicat查询哪些表有指定字段名

通常需要查询某个字段来自于哪张表,在navicat中没有直接查哪些表有指定字段名的功能,只能用sql来查. 1.(按字段名查表)查询哪些表有指定字段名(比如查字段名article_id)的SQL: S ...

在SQL2008查找某数据库中的列是否存在某个值

在SQL2008查找某数据库中的列是否存在某个值 --SQL2008查找某数据库中的列是否存在某个值 create proc spFind_Column_In_DB ( @type int,--类型: ...

查找Oracle数据库中的重复记录

本文介绍了几种快速查找ORACLE数据库中的重复记录的方法. 下面以表table_name为例,介绍三种不同的方法来确定库表中重复的记录 方法1:利用分组函数查找表中的重复行:按照某个字段分组,找出行 ...

(面试题)如何查找Oracle数据库中的重复记录

今天做了个面试题:查找Oracle数据库中的重复记录,下面详细介绍其他方法(参考其他资料) 本文介绍了几种快速查找ORACLE数据库中的重复记录的方法. 下面以表table_name为例,介绍三种不同 ...

JavaWeb-SpringSecurity在数据库中查询登陆用户

系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

SpringMvc处理模型数据(也就是从数据库中查询出来的数据放到请求域中)

这讲的是从数据库中查询到的数据,存放到请求域中.然后页面上直接可以从请求域中获取值. 有4种方式: 1):ModelAndView   是作为一个对象. /** * 目标方法的返回值可以是 Model ...

【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页

在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...

从Oracle数据库中查询前几个月数据时需要注意的一些问题

在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数 ...

MongoDB数据库中查询数据(下)

MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...

随机推荐

Android通用流行框架大全

1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图 ...

C#分布式缓存二:Asp.Net中使用Couchbase

前言 上一篇主要讲解对Couchbase服务端的安装配置和客户端的引用调用,通过代码来完成最简单的实现调用.本次通过简单的配置,来完 ...

MyCat 学习笔记 第九篇.数据分片 之 数值分布

1 应用场景 Mycat 自带了多套数据分片的机制,其实根据数值分片也是比较简单,其实这个和数据取摸是类似的实现. 优.缺点同上一篇 2 环境说明 参考  第六篇. ...

BZOJ1050 [HAOI2006]旅行

其实这道题根本不用最短路算法... 我们可以就把边从小到大排序,那么只需要枚举大小两个端点,把中间的边都加进去判断联通性即可. 判断联通性显然用的是并查集. #include

(转)Android系统自带样式(@android:style/)

在AndroidManifest.xml文件的activity中配置 1.android:theme="@android:style/Theme" 默认状态,即如果theme这里不 ...

[LeetCode#55, 45]Jump Game, Jump Game II

The problem: Given an array of non-negative integers, you are initially positioned at the first inde ...

E - Catch That Cow

Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...

用Promise实现:带延时功能的链式调用

// 1) 调用方式 new People('whr').sleep(3).eat('apple').sleep(5).eat('durian'); // 2) 打印结果 'hello, whr' - ...

四则运算coding

https://coding.net/u/ztf1641429293/p/sizeyunshuan/git/blob/master/Sizenyunsuan.java

高通RFC适配RFFE-添加MIPI设备【转】

本文转载自:https://blog.csdn.net/u011212816/article/details/80828625 RF driver主要设计到的器件 1.Transceiver 2.RF ...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值