前段时间想要用数组功能实现某些需求,结果发现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='测试';

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 ;

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 $$

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 ;

希望对各位有帮助,有问题的可以和我交流交流

mysql四维数组_MySQL如何实现数组功能相关推荐

  1. mysql 闪回_MySQL Flashback 闪回功能详解

    1. 简介 mysqlbinlog flashback(闪回)用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带wh ...

  2. mysql 存储过程 定义数组_MySql存储过程

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句 2.之前的sql没有条件判断,没有循环 3.存储过程带上流程控制语句(if while) 2 存储过程特点 1)执行效 ...

  3. mysql 字符转数组_mysql下将分隔字符串转换为数组

    MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如apple,banana,orange,pears,grape,要把它按照逗 ...

  4. php 数组与数组之间去重,PHP开发中一维数组与二维数组去重功能实现教程

    本篇文章讲述了PHP实现一维数组与二维数组去重功能示例.希望对在php学习和开发的同学有所帮助! 数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: ? $a ...

  5. shell 数组里追加数值_shell编程之数组及变量的多功能用法

    数组及变量的多功能用法 一.数组: 1.数组:存储多个元素的连续的内存空间,相当于多个变量的集合(变量:存储单个元素的内存空间). 2.数组名和索引 索引:编号从0开始,属于数值索引 bash的数组支 ...

  6. new创建 一维数组、二维数组、三维数组、四维数组...

    用new创建多维数组时,最后需要用delete,但是我在delete时遇到了麻烦,实在不能再浪费时间了,先mark一下,至少创建多维数组这段是对的 以int型数组为例,我们知道 一维数组  int a ...

  7. mysql统计唯一个数_统计数组元素的个数和唯一性的函数

    有些函数可以用来确定数组中的值总数及唯一值的个数.使用函数count()对元素个数进行统计,sizeof()函数时count()的别名,他们的功能是一样的. ①函数count() 函数count()的 ...

  8. Vue数组更新及过滤排序功能

    Vue为了增加列表渲染的功能,增加了一组观察数组的方法,而且可以显示一个数组的过滤或排序的副本.本文将详细介绍Vue数组更新及过滤排序 前面的话 Vue为了增加列表渲染的功能,增加了一组观察数组的方法 ...

  9. c 实现 php 数组,C语言实现数组功能

    array.h 文件 typedef struct { int len; int num; int *head; } A; void init_array(A *a, int len); /* 初始化 ...

最新文章

  1. Android Studio窗口组成
  2. 科大星云诗社动态20201231
  3. ECharts的点击事件
  4. 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的智慧养老管理系统
  5. matlab动态图最新存储文件,MATLAB 动图绘制、保存
  6. 腾讯打免费牌争抢市场 马化腾表示QQ旋风免费
  7. 详解阿里云第六代增强型实例,性能强劲,百万IOPS加持
  8. 计算机网络--基站 NFC 蓝牙 RFID ETC 云计算 云桌面
  9. 3dMax 单位设置(门)
  10. 戴尔r410服务器raid装系统,Dell R410 Raid磁盘阵列驱动
  11. 软考中级嵌入式系统设计师备考攻略
  12. 安全合规/法案--34--《APP违法违规收集使用个人信息行为认定方法》原文及解读
  13. vue双花括号的使用
  14. 安卓程序打包到安卓手机上运行Android程序
  15. AutoSAR开发的三种方法:自上而下式、自下而上式、混合式
  16. 编程培训怎么样 哪家编程培训机构靠谱
  17. CMMI3级和5级的区别
  18. SpringCloud Gateway微服务网关实战与源码分析-上
  19. HashMap 滚瓜烂熟 ConcurrentHashMap支支吾吾
  20. 最大化参数 火车头_火车头使用正则匹配模式采集数据

热门文章

  1. Ubuntu 14.04安装搜狗拼音linux版应该注意的问题
  2. UE5废墟破坏游戏场景创建学习教程
  3. 3dsMax插件V-Ray建筑可视化三维渲染细节技术学习教程
  4. 修改ceph-disk源码,增加指定ceph.conf部署osd的功能
  5. ExecutorService 的理解与使用
  6. Ubuntu 16.04安装QQ(不一定成功)
  7. 【转】初等数论 ——原根、指标及其应用
  8. Java基础-常量,变量,成员变量,局部变量
  9. 本地 无法启动 SQL Server 错误代码126
  10. indows上的android开发环境软件架构5