查询服务器上所有SQL SERVER数据库中是否包含某个字段,且该字段是否包含某个值

公司有一堆相同类别的客户,每个客户都部署了相同的一套系统,每套系统对应一个相同结构的数据库,昨天老板让查一下手机号码177xxxxx248是属于哪个客户的客户。

我要查的这个号码来自于oa_member表中的phone字段,我需要对所有的数据库进行查询,看哪个数据库的oa_member表的phone字段有这个号码的记录。

然而打开SQL SERVER Managerment Studio 一看,列出一大堆数据库。

image-20240418095703646

卧槽这五六十个数据库,难道要我每个数据库进行一次select?搞一次还好,如果后续动不动再弄个号码过来查一下,岂不是要疯了

于是研究了下SQL语句,看看有什么解决防范,最终还是有所收获。

目前服务器上不仅部署了不少那套系统,而且还有其他不一样的系统部署在服务器上,这样查询的时候需要先过滤掉其他系统的数据库,所以先检索下哪些数据库有oa_member表,通过下面语句就可以检索出来。

DECLARE @DBName NVARCHAR(255)
DECLARE @SQL NVARCHAR(MAX)DECLARE DatabaseCursor CURSOR FOR
SELECT name FROM sys.databases WHERE state_desc = 'ONLINE' AND name NOT IN ('master', 'tempdb', 'model', 'msdb')OPEN DatabaseCursor
FETCH NEXT FROM DatabaseCursor INTO @DBNameWHILE @@FETCH_STATUS = 0
BEGINSET @SQL = 'IF EXISTS (SELECT * FROM [' + @DBName + '].sys.tables WHERE name = ''oa_member'') BEGIN PRINT ''' + @DBName + ' '' END'EXEC sp_executesql @SQLFETCH NEXT FROM DatabaseCursor INTO @DBName
ENDCLOSE DatabaseCursor
DEALLOCATE DatabaseCursor

image-20240418100312787

通过以上SQL语句可以检索出所有我需要的数据库,所以再加上那个号码作为过滤条件其实就能立马筛选出该号码是哪个数据库的了

DECLARE @DBName NVARCHAR(255)
DECLARE @SQL NVARCHAR(MAX)DECLARE @PhoneNumber NVARCHAR(20) = '177xxxxxxx248' -- 要查询的手机号码DECLARE DatabaseCursor CURSOR FOR
SELECT name FROM sys.databases WHERE state_desc = 'ONLINE' AND name NOT IN ('master', 'tempdb', 'model', 'msdb')OPEN DatabaseCursor
FETCH NEXT FROM DatabaseCursor INTO @DBNameWHILE @@FETCH_STATUS = 0
BEGINSET @SQL = 'IF EXISTS (SELECT * FROM [' + @DBName + '].sys.tables WHERE name = ''oa_member'' AND schema_id = SCHEMA_ID(''dbo'')) BEGIN IF EXISTS (SELECT * FROM [' + @DBName + '].dbo.oa_member WHERE phone = ''' + @PhoneNumber + ''') BEGIN PRINT ''' + @DBName + ' 有号码 ' + @PhoneNumber + ''' END END'EXEC sp_executesql @SQLFETCH NEXT FROM DatabaseCursor INTO @DBName
ENDCLOSE DatabaseCursor
DEALLOCATE DatabaseCursor

image-20240418100744830

看到这里,就知道这个号码是属于哪个客户的了

只需要进入ChangShuZhiTangBaoQinChanSi数据库对oa_member表进行查询的同时通过phone字段过滤,就能查到该号码对应的信息了

use ChangShuZhiTangBaoQinChanSi
goselect * from oa_member where phone ='177xxxxx248'
go

image-20240418101552668

搞定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/630489.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot+Vue的校园网上店铺,开启便捷购物新模式

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Java内存模型和 JVM 内存运行时

文章目录 前言一、什么是Java 的内存模型?二、什么是 JVM 的运行时数据区Java8 之前和之后的区别JVM 内存模型JVM 内存区域JVM 内存垃圾回收JVM如何判断哪些对象不在存活?JVM运行过程中如何判断哪些对象是垃圾? JVM 垃圾回收Java8 中的 jvm如…

leetcode刷题(python)——(四)

01.02.03 练习题目(第 04 天) 1. 0048. 旋转图像 1.1 题目大意 描述:给定一个 n n n \times n nn 大小的二维矩阵(代表图像) m a t r i x matrix matrix。 要求:将二维矩阵 m a t r i x matrix matr…

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住,不跳转到单位的上网认证界面。 打开手机的设置应用,点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面, 正常弹出上网认证界面&a…

OpenGL:图元

OpenGL的图元 点 GL_POINTS: 将顶点绘制成单个的点 线 GL_LINES:将顶点用于创建线段,2个点成为一条单独的线段。如果顶点个数是奇数,则忽略最后一个。 顶点:v0, v1, v2, v3, … , vn,线段:…

# 从浅入深 学习 SpringCloud 微服务架构(一)基础知识

从浅入深 学习 SpringCloud 微服务架构(一)基础知识 1、系统架构演变: 1)单体应用架构。如电商项目。 用户管理、商品管理、订单管理,在一个模块里。 优点:开发简单,快速,适用于…

ASCII 码值表

字符ASCII码值048149250351452553654755856957 大写字母A-Z对应的ASCII码值:65-90 小写字母a-z对应的ASCII码值:97-122 小写字母-32大写字母 ch-32;//将ch小写->大写 以上是常用的关系,不用死记忆,对照表格,可以方便理解编程。 将字符…

NAND数据恢复的方案

NAND Flash是固态硬盘(SSD)的核心数据存储。然而,NAND Flash因其物理特性和工作原理,存在一定的内在脆弱性,尤其是在数据存储的长期可靠性方面。 比特错误是指在读取NAND Flash时,原本存储的二进制位&#…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告 1.实践内容 (1)动手实践Metasploit windows attacker 任务:使用metasploit软件进行windows远程渗透统计实验 具体任务内容:使用windows Attacker/BT4攻击机尝试对wind…

JDK8、JDK11、JDK17和JDK21这几个版本更新的主要特性

文章目录 1.JDK82.JDK113.JDK174,JDK21 1.JDK8 JDK8是Java的一个重大更新版本,引入了一系列新特性和改进,主要包括: Lambda表达式:Lambda表达式允许我们以简洁、函数式的方式编写代码,使代码更易于理解和维护。-Stream…

WordPress的全面解析:为什么它是创建博客和网站的首选

在当前的数字化时代,无论是个人博客还是企业网站,都需要一个强大而灵活的平台以支撑其内容和用户交互。WordPress作为全球最流行的内容管理系统(CMS),以其强大的功能、灵活的定制性和广泛的用户基础,成为了…

状态压缩DP题单

P1433 吃奶酪&#xff08;最短路&#xff09; dp(i, s) 表示从 i 出发经过的点的记录为 s 的路线距离最小值 #include<bits/stdc.h> #define int long long using namespace std; const int N 20; signed main() { int n; cin >> n;vector<double>x(n 1),…