`

在MySQL中全库搜索指定字符串

 
阅读更多

有时候,需要从整个MySQL库中搜索某一字符串,但却不知道在哪个表哪个字段,用下面的存储过程,So Easy.

 

DELIMITER //
DROP PROCEDURE IF EXISTS `proc_FindStrInAllDB`//
# CALL `proc_FindStrInAllDB` ('testdb','中');
CREATE PROCEDURE `proc_FindStrInAllDB` 
(
 IN p_dbname VARCHAR(128),
 IN p_finstr VARCHAR(128) 
)
BEGIN
 -- 需要定义接收游标数据的变量 
 DECLARE tmp_dbname VARCHAR(128);
 DECLARE tmp_tbname VARCHAR(128);
 DECLARE tmp_colname VARCHAR(128); 
 -- 遍历数据结束标志
 DECLARE done INT DEFAULT FALSE;
  
   
 -- 游标
 DECLARE cur_db_tb CURSOR 
 FOR 
 SELECT  
  #*,
  C.table_schema,C.table_name,C.COLUMN_NAME
 FROM 
  information_schema.`COLUMNS` C
  INNER JOIN information_schema.`TABLES` T ON C.`TABLE_NAME`=T.`TABLE_NAME` 
 WHERE
  T.`TABLE_TYPE`='BASE TABLE' 
 AND 
  (C.data_type LIKE '%char%' OR C.data_type LIKE '%text%')
 AND 
  (C.TABLE_SCHEMA=p_dbname OR IFNULL(p_dbname,'') ='') AND IFNULL(p_finstr,'')<>'';
  
 -- 将结束标志绑定到游标
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 CREATE TEMPORARY TABLE IF NOT EXISTS rstb(dbname VARCHAR(128),tbname VARCHAR(128),colname VARCHAR(128),cnt INT); 
 -- 打开游标
 OPEN cur_db_tb;
   -- 开始循环
   read_loop: LOOP
   -- 提取游标里的数据,这里只有一个,多个的话也一样;
   FETCH cur_db_tb INTO  tmp_dbname,tmp_tbname,tmp_colname;
   -- 声明结束的时候
   IF done THEN
   LEAVE read_loop;
   END IF;
   -- 这里做你想做的循环的事件
   SET @sqlstr=CONCAT('select count(1) into @rn from ',tmp_dbname,'.',tmp_tbname,' where ',tmp_colname,' like ''%',p_finstr,'%''');
   
   PREPARE str FROM @sqlstr;  
   EXECUTE str;   
   DEALLOCATE PREPARE str;
   IF IFNULL(@rn,0)>0
    THEN
    INSERT INTO rstb VALUES(tmp_dbname,tmp_tbname,tmp_colname,@rn);
   END IF;

   END LOOP;
 -- 关闭游标
 CLOSE cur_db_tb;
 
 SELECT * FROM rstb;
 DROP TABLE rstb;
 
END
//
DELIMITER ;

 

分享到:
评论

相关推荐

    mysql分割字符串

    在MySQL数据库中,有时我们需要处理存储在单一字段内的多个值,这时就涉及到字符串的分割操作。这个场景在处理如CSV格式的数据或者存储一串相关但独立的信息时尤为常见。本篇将详细介绍MySQL中的字符串分割技术及其...

    mysql数据库全文多库多表查找,查询所有数据库中包含指定字符的数据。

    mysql数据库全文查找,查询所有数据库中包含指定字符的数据。 一、支持功能: 1、支持所有数据库查询字符串,或者指定一个或者多个数据库查询字符串; 2、支持本地使用或者指定远程数据库地址; 3、支持命令行指定...

    mysql 计算字符串相似度

    在许多应用场景中,我们需要对两个字符串进行相似度比较,比如搜索引擎中的关键词匹配、文本分析中的近义词识别等。MySQL 提供了多种方法来实现字符串相似度的计算,其中一种较为常见的做法是通过自定义函数来实现。...

    [字符串]字符串提取(获取两个字符串中间的字符串)

    1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。返回值是子字符串的起始索引,如果未找到则返回-1。 2. **Substring**:根据提供的起始索引和长度,截取字符串的一部分。 例如,假设...

    MySql函数-取一个字符串分隔后指定位置的子字符串

    一、函数功能:对字符串进行分隔数组,取指定顺序位置的子字符串,支持左右双向获取,支持默认值返回,附有测试用例 二、函数格式:fn_get_split_val(in_str varchar,in_delimiter varchar,in_order int,in_default ...

    mysql将字符串分割成多列值

    利用mysql中提供的所有函数,组成的一个存储过程。此存储过程主要是将传入的字符串分割为多个值,单个列。

    mysql字符串连接函数

    在处理数据库中的字符串操作时,MySQL提供了多种强大的工具来帮助我们进行数据处理。本文主要介绍几种常用的字符串连接函数,包括`CONCAT()`、`CONCAT_WS()`以及`GROUP_CONCAT()`函数,并通过示例来详细解释它们的...

    Mysql字符串截取及获取指定字符串中的数据

    在MySQL中,处理字符串是常见的任务之一,尤其是在数据提取和分析的过程中。本文将详细介绍如何使用MySQL的字符串截取函数来获取指定字符串中的数据。 首先,我们来看一下`substring_index()`函数,这是一个非常...

    查找指定字符串+查找文本文件中的指定字符串

    本话题聚焦于如何在C++中查找指定字符串,包括在数据库中的表和字段以及文本文件中进行搜索。下面将详细阐述这一主题。 一、在数据库中查找指定字符串 在C++中,我们通常需要借助数据库接口库来连接和操作数据库,...

    批量替换 MySQL 指定字段中的字符串

    在数据库管理中,批量替换指定字段中的字符串是一个非常实用的操作,尤其在数据更新或迁移时。MySQL 提供了一个内置函数 `REPLACE()`,使得这个任务变得简单而高效。本篇文章将详细讲解如何利用 `REPLACE()` 函数在 ...

    mysql基于正则实现模糊替换字符串的方法分析

    在MySQL中,有时候我们需要对数据库中的字符串进行模糊替换,特别是在处理HTML标签或者特定模式的数据时。正则表达式(Regular Expression)在这种情况下显得尤为强大。MySQL提供了`REGEXP_REPLACE`函数(在某些版本...

    MySql字符串相似匹配

    亲测可用,mysql字符串相似度匹配函数。下载后直接在mysql中可以测试运行。

    MySql连接字符串

    在开发基于MySql数据库的应用程序时,正确配置数据库连接字符串是非常重要的一步。连接字符串包含了客户端与数据库服务器建立连接所需的各种参数。本文将深入解析一个典型的MySql连接字符串,并针对其中的关键参数...

    mysql拼接字符串函数

    MySQL 拼接字符串函数 MySQL 中有三个常用的字符串拼接函数:CONCAT、CONCAT_WS 和 GROUP_CONCAT。这些函数都可以用来将多个字符串连接起来,但是它们的使用场景和效果不同。 CONCAT 函数 CONCAT 函数的语法是 `...

    MySql连接字符串总结

    本篇文章将详细介绍不同类型的MySQL连接字符串及其用法。 首先,我们来看MySQL Connector/ODBC的连接方式。ODBC(Open Database Connectivity)是一种通用数据库访问接口,它允许应用程序通过ODBC驱动程序连接到...

    全局查询mysql数据中指定库中的指定字符串

    1、python编写 2、采用多线程 3、全局查询指定字符串,查询结果保存在result文件夹下面的文件中

    MySQL 字符串类型.pdf

    CHAR 类型的字符串在存储时,会自动补齐到指定的长度,以便于快速存取数据。 变长字符串类型 变长字符串类型是指字符串的长度可以变化的。这种类型的字符串在存储时,会根据实际的字符串长度来占用存储空间。常见...

    MySQL函数 获取随机字符串

    MySQL自定义函数 获取随机字符串. string = date +time + random(6)

    PB通过连接字符串连接MySQL

    在提供的压缩包文件“PBDemo_MySQLConnectString”中,很可能是包含了一个示例项目,演示了如何在PB 11.5中使用连接字符串连接到MySQL数据库。这个示例可能包含了创建数据源的步骤、编写连接代码以及执行简单查询的...

    mysql常用字符串函数、字符串处理函数大全

    11. `INSERT(str, pos, len, newstr)`:在字符串`str`的`pos`位置开始,用`newstr`替换`len`长度的子串。如果`pos`超出字符串长度,返回原始字符串。 12. `INSTR(str, substr)`:返回`substr`在`str`中的第一次出现...

Global site tag (gtag.js) - Google Analytics