900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 查询mysql数据库里的某字段值所对应的表名与字段名

查询mysql数据库里的某字段值所对应的表名与字段名

时间:2019-09-04 17:59:32

相关推荐

查询mysql数据库里的某字段值所对应的表名与字段名

应用场景:比如在系统的web页面上输入某些值,然后想知道是否正确保存了,但不知道数据是存到哪个表里,除了直接问相关开发人员外,还可以通过运行该查询,来找到数据对应的表以及字段名。

DROP TABLE if EXISTS temp;CREATE TABLE temp(tablename VARCHAR(255),LieName VARCHAR(255));# 将结束符改为//delimiter //DROP procedure IF EXISTS getDataByDbName//# 两个必须的参数:数据库名dbName,字段名ziduanCREATE procedure getDataByDbName(in dbName VARCHAR(255),IN ziduan VARCHAR(255))BEGINDECLARE num INT;SET @STMT =CONCAT("SELECT COUNT(*) FROM ",dbName," WHERE `",ziduan,"` LIKE BINARY '%特定值%' INTO @num;");# 预处理PREPARE STMT FROM @STMT;EXECUTE STMT;IF(@num>0) THENINSERT INTO temp VALUES (dbName,ziduan);END IF;end//delimiter ;delimiter //DROP PROCEDURE IF EXISTS searchAll//CREATE PROCEDURE searchAll()BEGINDECLARE done BOOLEAN DEFAULT 0;DECLARE biao VARCHAR (255);DECLARE ziduan VARCHAR (255);DECLARE indexss CURSORFORSELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='数据库名' ;/*02000代表异常:1.SELECT INTO语句或INSERT语句的子查询的结果为空表。2.在搜索的UPDATE或DELETE语句内标识的行数为零。3.在FETCH语句中引用的游标位置处于结果表最后一行之后。 */DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;OPEN indexss;repeatFETCH indexss INTO biao,ziduan;call getDataByDbName(biao,ziduan);UNTIL done END repeat;CLOSE indexss;end//delimiter ;CALL searchAll();SELECT * FROM temp;

使用时,在查询页面粘贴代码,“特定值”改为待查的字段值,“数据库名”改为对应数据库名称,执行查询就能查到相关信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。