mysql 数组角标,MySQL如何实现数组功能

前段时间想要用数组功能实现某些需求,结果发现mysql不支持数组,这个确实让人很头痛。查阅官方文档,也没有这一方面的资料。结果在网上,看到了某仁兄贴出了变相实现的一种方法,代码以下:

DELIMITER ;

DROP DATABASE IF EXISTS PRO;

USE MYSQL

CREATE DATABASE PRO;

USE PRO

DROP TABLE IF EXISTS TEMP;

CREATE TABLE TEMP (

ID                        INT(8)                NOT NULL AUTO_INCREMENT,

FOREIGN_KEY               INT(8)                NOT NULL,

PRIMARY KEY (ID)

) TYPE=MyISAM AUTO_INCREMENT=1 COMMENT='测试';mysql

DELIMITER ;

DELIMITER //

DROP PROCEDURE IF EXISTS DNA  //

CREATE PROCEDURE DNA (IN THE_CNT INT(8), IN THE_STR VARCHAR(10000))

BEGIN

DECLARE i INT(8) DEFAULT 0;

REPEAT SET i = i + 1;

INSERT INTO TEMP VALUES (NULL, SUBSTRING_INDEX(SUBSTRING_INDEX(THE_STR, ',', i), ',', -1));

UNTIL i >= THE_CNT END REPEAT;

END

//

DELIMITER ;sql

CALL DNA(7, '231,24,1114,151,7831241,9134,989');

SELECT * FROM TEMP;

+----+-------------+

| ID | FOREIGN_KEY |

+----+-------------+

|  1 |         231 |

|  2 |          24 |

|  3 |        1114 |

|  4 |         151 |

|  5 |     7831241 |

|  6 |        9134 |

|  7 |         989 |

+----+-------------+数组

看了一下他的代码,以为改方法不是很灵活,好比须要每次输入要轮询的次数,如这里输入了7,这个让我看起来很不舒服。因而本身动手修改了一下,特意也把代码贴出了,以下:

DELIMITER $$ide

DROP PROCEDURE IF EXISTS `Pr_Rand_insert`$$函数

CREATE PROCEDURE `Pr_Rand_insert`(

IN insert_string VARCHAR(10000) -- 定义输入

)

BEGIN

DECLARE I INT(8) DEFAULT 1;

DECLARE J INT(8) DEFAULT 0;

SET J = CHAR_LENGTH(insert_string)-CHAR_LENGTH(REPLACE(insert_string,',','')) + 1; -- 计算共有多少位为",",则再加上1就表示共有多少个数值须要插入

WHILE (I <= J) DO

INSERT INTO num VALUES (SUBSTRING_INDEX(SUBSTRING_INDEX(insert_string,',',I),',',-1)); -- 用到了substring_index()函数

SET I = I + 1;

END WHILE;

SELECT CONCAT('共插入了',J,'个值,请确认');

END$$测试

DELIMITER ;文档

但愿对各位有帮助,有问题的能够和我交流交流string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值