首页 > 数据库 >查询字符串在数据库哪些表那些列存在/根据字符串快速定位表定位列

查询字符串在数据库哪些表那些列存在/根据字符串快速定位表定位列

时间:2024-09-19 09:01:50浏览次数:9  
标签:定位 -- 数据库 colname tbname sql 字符串 fetch select

 1 SET QUOTED_IDENTIFIER OFF 
 2 GO
 3 SET ANSI_NULLS OFF 
 4 GO
 5 
 6 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'sp_FindString') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
 7     DROP PROCEDURE sp_FindString
 8 GO
 9   
10  /* 
11     查询方式:exec sp_FindString '%张三%'
12     查询字符串在哪些表那些列存在
13     快速根据页面上显示的文字字符串定位到数据库的哪些关联表中
14   */
15 CREATE PROCEDURE [dbo].[sp_FindString]
16 (
17     @old_string varchar(50)
18 )    
19 as    
20 begin    
21     declare @tbname varchar(50)    
22     declare tbroy cursor for 
23         select name from sysobjects where xtype= 'U ' --第一个游标遍历所有的表    
24     open tbroy    
25     fetch next from tbroy into @tbname    
26     while @@fetch_status=0    
27     begin  
28         declare @colname varchar(500)    
29         declare colroy cursor for select name from syscolumns where id=object_id(@tbname) and xtype in    
30         (select xtype from systypes where name in ( 'varchar', 'nvarchar', 'char', 'nchar', 'text', 'int'  
31         , 'decimal', 'float', 'int', 'money')) --第二个游标是第一个游标的嵌套游标,遍历某个表的所有字段    
32         open colroy    
33         fetch next from colroy into @colname    
34         while @@fetch_status=0    
35         begin
36              if(@colname=@old_string)  
37             begin  
38               print '包含有列的表'+ @colname +'包含有列的表'+@tbname    
39             end  
40   
41             declare @sql nvarchar(1000),@j int    
42             select @sql= 'select @i=count(1) from ' + '[' + @tbname + ']' + ' where '+ '[' + @colname + ']'+ ' like '+ ''''+ @old_string + ''''
43              --select @sql    
44             exec dbo.sp_executesql @sql,N'@i int output', @i = @j output --输出满足条件表的记录数    
45             if @j> 0    
46             begin
47                 select 包含字串的表名 = @tbname ,包含字串的列名 = @colname    
48                select @sql = 'select ' + @colname + ',* from ' + @tbname + ' where '+ @colname + ' like '+ '''' + @old_string + ''''    
49               --select @sql = 'UPDATE '+ @tbname + ' set '+ @colname   + ' = REPLACE(  '+ @colname + ' , ''任我行'',''LEMON'')'    
50               print @sql    
51               --exec(@sql)    
52             end 
53         fetch next from colroy into @colname    
54         end    
55         close colroy    
56         deallocate colroy 
57      fetch next from tbroy into @tbname    
58     end    
59     close tbroy    
60     deallocate tbroy    
61 end    

 

标签:定位,--,数据库,colname,tbname,sql,字符串,fetch,select
From: https://www.cnblogs.com/guzhengtao/p/18419759

相关文章

  • pbootcms提示:“未检测到您服务器环境的sqlite3数据库扩展...”
    当您在使用PbootCMS时遇到“未检测到您服务器环境的sqlite3数据库扩展...”的提示时,这通常意味着PHP环境缺少对SQLite3的支持。SQLite3是一个轻量级的嵌入式数据库引擎,它被广泛用于Web应用中,特别是在不需要完整服务器型数据库的情况下。要解决这个问题,您可以按照以下步骤进行:......
  • mysql查询字段排序规则、数据库编码、表编码,修改排序规则
    查询字段排序规则、数据库编码、表编码SELECTTABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAMEFROMINFORMATION_SCHEMA.COLUMNS 表字段修复#改变字段数据字符集、排序规则SELECTTABLE_SCHEMA'数据库',TABLE_NAME'表',CO......
  • 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所有的表通过showtables能看到,但是select的过程中却报“Tabledoesn'texist”。于是,建议他试试可传输表空间。同......
  • 2606. 找到最大开销的子字符串
    题目链接2606.找到最大开销的子字符串思路前缀和/动态规划-最长子数组和-简单变体题解链接【转换】最大子数组和(Python/Java/C++/Go)关键点无时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码实现(动态规划):classSolution:defmaximumCostSubstring(......
  • MYSQL 查询将列中的所有数据从一个数据库复制到另一个数据库
    数据迁移的定义数据迁移是指将数据从一个系统或存储位置移动到另一个系统或存储位置的过程。它涉及到数据的提取、转换和加载,以确保数据在新的环境中能够正确地使用和访问。数据迁移通常是为了实现系统升级、数据中心迁移、数据库合并等目的。在数据迁移过程中,需要考虑数据的完整性......
  • 1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
    要在Java中连接MySQL数据库,通常使用JDBC(JavaDatabaseConnectivity)API。这是一个用于执行SQL语句的JavaAPI,可以用来访问关系型数据库。下面是使用JDBC连接MySQL数据库的详细步骤:1.添加MySQLJDBC驱动首先,需要确保项目中包含MySQL的JDBC驱动程序。这个驱动程序通常是一个......
  • springboot连接hive数据库的依赖配置
    pom.xml1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3xsi:schemaLocation="http://......
  • ICPC2021 沈阳站 M String Problem 题解 | 十种做法一网打尽 , 一道题带你回顾字符串科
    题目传送门题意给定一个字符串,求每个前缀的字典最大序子串。注意到:对于每个前缀$s_{[1,i]}$,字典序最大子串的右边界一定是\(i\)。随着着\(i\)的增大,字典序最大子串的左边界一定是单调不减的。解法不分先后。后缀数组SASA&SAM后缀数组&后缀自动机SA对所有......
  • MySql 对数据库和表的操作
    目录一.登入MySql二.数据库的操作1.创建数据库案例 2.字符集和校验规则 3.操纵数据库 4.数据库备份和恢复5.查看连接情况三..表结构的操作1. 创建表2.查看表结构3.表属性操作4.查看表中具体信息   5.修改表名6.删除表 7.备份和恢复一.登入MySql......
  • 自定义日志注解,保存信息到数据库
    定义日志注解importjava.lang.annotation.*;/***@authorwzw*@version1.0*@Date2023-2-1717:31:19*/@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceLog{/***描述*@return*/......