获取字段MySQL动态实现行转列获取字段(mysql行转列动态)

在很多实际开发过程中,经常需要对Mysql表字段进行动态获取,这种情况下,通常会遇到要对普通表实现行转列的需要,获取字段的功能也不例外。在本文中,我将向大家介绍如何使用MySQL动态实现普通表的行转列,以获取字段在Mysql中的实现工作。

首先,我们必须把一张普通的表转化为一个动态的表,这样才可以实现行转列,以达到获取字段的目的。为此,我们将创建一个存储过程,来完成表转换的工作。示例代码如下:

DELIMITER $$

CREATE PROCEDURE sp_getFiled(IN TBLName VARCHAR(50))

BEGIN

DECLARE fld_name VARCHAR(50);

DECLARE lv_end INT DEFAULT 0;

DECLARE lv_start INT DEFAULT 0;

CREATE TEMPORARY TABLE IF NOT EXISTS tbl_tmp (col01 VARCHAR(50));

DECLARE fld_cur CURSOR FOR

SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = TBLName;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET lv_end = 1;

OPEN fld_cur;

GET_FILD: LOOP

FETCH fld_cur INTO fld_name;

IF lv_end = 1 THEN

LEAVE GET_FILD;

END IF;

SET @lv_sqlcmd = CONCAT(‘INSERT INTO tbl_tmp SELECT ‘, fld_name, ‘ FROM ‘, TBLName);

PREPARE stmt FROM @lv_sqlcmd;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

END LOOP;

SELECT * FROM tbl_tmp;

DROP TABLE tbl_tmp;

END$$

DELIMITER ;

以上代码,使用了information_schema.columns表获取字段之后,通过循环函数及临时表,动态实现了行转列,完成了获取字段的目的。

另外,我们也可以使用一个例如group_concat的函数,来实现MySQL动态获取字段的功能,示例代码如下:

SELECT table_name,

GROUP_CONCAT(column_name

ORDER BY ordinal_position SEPARATOR ‘,’) AS column_str

FROM information_schema.columns

GROUP BY table_name;

这样,可以方便的获取一张表的数据,而不用特意地构建一个存储过程来实现行转列。

以上,就是如何用MySQL实现普通表的行转列,从而完成获取字段等功能的实现示例,希望可以给大家一定的参考。


数据运维技术 » 获取字段MySQL动态实现行转列获取字段(mysql行转列动态)