mysql有数组吗

您所在的位置:网站首页 fruit和fruits有什么区别 mysql有数组吗

mysql有数组吗

#mysql有数组吗| 来源: 网络整理| 查看: 265

MySQL中无数组类型,通常将数组元素按某个字符分割以字符串形式存储。MYSQL中没有数组的原因是因为大多数人并不真正需要它。关系数据库使用关系工作,并且大多数情况下,最好是为每个“信息位”分配一行表。例如,可能认为“我想要一个东西列表”,而是创建一个新表,将一个表中的行与另一个表中的行相关联;这样可以表示“M:N”关系。数据库可以索引这些行;而数组通常不会编入索引。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

1. MySQL中以字符串的形式存储数组

MySQL中无数组类型,通常将数组元素按某个字符分割以字符串形式存储

1.1. 求数组中元素的个数

方法:按指定符号分割字符串,返回分割后的元素个数。方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。

CREATE function Get_StrArrayLength ( @str varchar(1024), --要分割的字符串 @split varchar(10) --分隔符号 ) returns int as begin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while @location0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end return @length end登录后复制

调用示例:

select Get_StrArrayLength('78,1,2,3',',')登录后复制

返回值:

4登录后复制

1.2. 得到数组中指定位置的元素

方法:按指定符号分割字符串,返回分割后指定索引的第几个元素(注意索引从1开始),象数组一样方便

CREATE function Get_StrArrayStrOfIndex ( @str varchar(1024), --要分割的字符串 @split varchar(10), --分隔符号 @index int --取第几个元素 ) returns varchar(1024) as begin declare @location int declare @start int declare @next int declare @seed int set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split) set @location=charindex(@split,@str) while @location0 and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 return substring(@str,@start,@location-@start) end登录后复制

调用示例:

select Get_StrArrayStrOfIndex('8,9,4',',',2)登录后复制

返回值:

9登录后复制

1.3. 结合以上两个函数,遍历数组中的元素

方法:结合上边两个函数,象数组一样遍历字符串中的元素

declare @str varchar(50) set @str='1,2,3,4,5' declare @next int set @next=1 while @next


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3