mysql 查找数据库里面字段的id是否存在 可以限定表和字段
2017-08-15 16:18
507 查看
DELIMITER $$
USE `awebprice`$$
DROP PROCEDURE IF EXISTS `p_search_value`$$
CREATE DEFINER=`dbn_admin`@`%` PROCEDURE `p_search_value`(
IN p_value VARCHAR(255)
,IN p_tablelike VARCHAR(255)
,IN p_columnlike VARCHAR(255)
)
BEGIN
DECLARE var_table VARCHAR(255);
DECLARE var_column VARCHAR(255);
DECLARE var_sql VARCHAR(1000);
DECLARE var_done INT DEFAULT FALSE;
DECLARE cur_Search CURSOR FOR
SELECT table_name,column_name,
CONCAT('set @aa =(select 1 from `',table_name,'` where `',column_name,'`=',
(CASE WHEN data_type IN ('int','bigint') THEN p_value ELSE CONCAT('''',p_value,'''') END)
,' limit 1)') AS sq
FROM information_schema.`COLUMNS`
WHERE table_schema=DATABASE() AND data_type IN ('varchar','int','bigint')
AND table_name LIKE CONCAT('%',IFNULL(p_tablelike,'_'),'%')
AND column_name LIKE CONCAT('%',IFNULL(p_columnlike,'_'),'%')
;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET var_done = TRUE;
DROP TEMPORARY TABLE IF EXISTS tmp_to_save_result;
CREATE TEMPORARY TABLE tmp_to_save_result(tb VARCHAR(255),col VARCHAR(255));
OPEN cur_Search;
read_loop:LOOP
FETCH cur_Search INTO var_table,var_column,var_sql;
IF var_done THEN
LEAVE read_loop;
END IF;
SET @p_sql=var_sql;
PREPARE stmt FROM @p_sql;
EXECUTE stmt;
IF(FOUND_ROWS()=1) THEN
INSERT INTO tmp_to_save_result VALUE(var_table,var_column);
END IF;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur_Search;
SELECT tb,col FROM tmp_to_save_result;
END$$
DELIMITER ;
USE `awebprice`$$
DROP PROCEDURE IF EXISTS `p_search_value`$$
CREATE DEFINER=`dbn_admin`@`%` PROCEDURE `p_search_value`(
IN p_value VARCHAR(255)
,IN p_tablelike VARCHAR(255)
,IN p_columnlike VARCHAR(255)
)
BEGIN
DECLARE var_table VARCHAR(255);
DECLARE var_column VARCHAR(255);
DECLARE var_sql VARCHAR(1000);
DECLARE var_done INT DEFAULT FALSE;
DECLARE cur_Search CURSOR FOR
SELECT table_name,column_name,
CONCAT('set @aa =(select 1 from `',table_name,'` where `',column_name,'`=',
(CASE WHEN data_type IN ('int','bigint') THEN p_value ELSE CONCAT('''',p_value,'''') END)
,' limit 1)') AS sq
FROM information_schema.`COLUMNS`
WHERE table_schema=DATABASE() AND data_type IN ('varchar','int','bigint')
AND table_name LIKE CONCAT('%',IFNULL(p_tablelike,'_'),'%')
AND column_name LIKE CONCAT('%',IFNULL(p_columnlike,'_'),'%')
;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET var_done = TRUE;
DROP TEMPORARY TABLE IF EXISTS tmp_to_save_result;
CREATE TEMPORARY TABLE tmp_to_save_result(tb VARCHAR(255),col VARCHAR(255));
OPEN cur_Search;
read_loop:LOOP
FETCH cur_Search INTO var_table,var_column,var_sql;
IF var_done THEN
LEAVE read_loop;
END IF;
SET @p_sql=var_sql;
PREPARE stmt FROM @p_sql;
EXECUTE stmt;
IF(FOUND_ROWS()=1) THEN
INSERT INTO tmp_to_save_result VALUE(var_table,var_column);
END IF;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur_Search;
SELECT tb,col FROM tmp_to_save_result;
END$$
DELIMITER ;
相关文章推荐
- magento 检测 订单号, 是否真的存在/ sales/order_item 表进行查找 里面所有字段
- 无限循环父子树(主要是数据库里面的一张表,然后根据ID查找父类的名称,以及查找子类的名称) 自己思考,存点东西。
- 检测数据库表格中是否存在相应的字段
- 在SQL2008查找某数据库中的列是否存在某个值
- 在SQL2008查找某数据库中的列是否存在某个值
- 2_1 输入10个id并查找是否存在
- SQLServer2005 判断数据库中是否存在某张表或是查找库中的所有表名,然后删除
- mysql判断指定数据库是否存在?
- 简单的方法实现判断Mysql内某个字段Fields是否存在
- mysql判断字段是否存在的方法
- jquery ajax+mysql+php实现数据库验证用户名是否存在
- oracle判断表中的字段是否存在,表在数据库中是否存在
- python mysql 插入的数据是字典时,可以直接插入到数据库,不要进行for循环读取每一个字段
- 判断mysql指定数据库指定表是否存在的SQL语句
- 判断数据库、表和字段是否存在
- mysql5.7基础 create database if not exists... 判断数据库是否存在 若不存在则创建
- 判断mysql字段是否存在(PHP代码函数)
- 判断MSSQL数据库中是否已经存在相同的表与字段
- SQL语句判断指定的数据库、表、字段、存储过程是否存在
- mysql判斷字段是否存在方法