在sql server数据库所有表中查询某个值
web SQLServer 2018-11-15 3310 0
关于本站

本人承接php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

1773618 1652 17
最新评论
报错 in promise) MiniProgramError {"errMsg":"removeTabBarBadge:fail not TabBar page"} Object
评 人人商城小程序昵称变成了“微信用户”头像也不显示?getUserInfo换成getUserProfile
按照这个修改后报错: ReferenceError: n is not defined at success (index.js? [sm]:3) at Function.forEach.u.<computed> (VM10210 WAService.js:2) at :55237/appservice/<api login success callback function> at Object.success (VM10210 WAService.js:2) at r (VM10210 WAService.js:2) at VM10210 WAService.js:2 at w (VM10210 WAService.js:2) at VM10210 WAService.js:2 at VM15 asdebug.js:1 at I (VM15 asdebug.js:1)(env: Windows,mp,1.05.2105170; lib: 2.17.0)
评 人人商城小程序昵称变成了“微信用户”头像也不显示?getUserInfo换成getUserProfile
asfdsafasdf
评 ;!function(){}();
:kaixin:
评 thinkphp 3.2.3 Runtime\Logs日志文件太多怎么关闭日志功能
其他浏览器呢
评 对服务器的请求已遭到某个扩展程序的阻止
文章标签更多
ThinkPHP (163)
Mysql (38)
DedeCms (33)
jQuery (41)
证件照 (1)
setInc (3)
setDec (3)
onclick (4)
打开边栏(ESC) 关闭边栏(ESC)

原标题:查找sqlserver数据库中,查询某值所在表名和字段名

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

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

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',
EXEC [SP_FindValueInDB] 'BBQ CHIC SW'
结果如下:
from clipboard

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


实际应用:

1,新建存储过程

打开需要查询的数据库>可编程性>存储过程>新建存储过程>粘贴上述代码,点执行,存储过程创建完成。

from clipboard

2,执行查询

所需查询数据库>右键>新建查询,粘贴EXEC [SP_FindValueInDB] 'BBQ CHIC SW'代码,点击执行,得到查询结果,有三个数据表中存在该值。

from clipboard

3,具体查询某个表中的详细情况

方法一:注释掉执行存储过程的语句(--为注释),编写查询语句,点执行,得到查询结果

from clipboard

方法二:不需要注释执行存储过程的语句,换行编写查询语句,选中查询语句后,点执行,就是只执行选中的语句,得到查询结果。

from clipboard

方法三:新建查询窗口,编写查询语句

版权声明:本篇文章来源于网络。 来源链接

相关推荐
SQL Server 附加数据库时 出现错误 “无法为请求检索数据,Error:5123 ” 的解决办法
SQLServer | 2018-02-09 4688
问题: 安装SQL Server 2008 后附加数据库则出现错误 "无法为请求检索数据,Error:5123"。   解决方法: 对错误信息分析,是文件权限造成的。 1 更改数据库文件所有者 打开数据库文件夹,右键点击数据库文件,选择“属性Property” =>“安全Security”,点击“高级Advan...
sql server 2008 r2评估期已过。有关如何升级的测试版软件的信息
SQLServer | 2017-10-16 3358
当打开sql server2008企业管理器的时候,出现报错“评估期已过。有关如何升级的测试版软件的信息.....” 解决办法: 1,打开注册表:开始>运行>regedit, 修改注册表:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Ser...
评论:0条
评论加载中...
发表评论