介绍
MySQL是一种开源关系型数据库管理系统,是世界上利用最广泛的数据库管理系统之一。在使用MySQL的进程中,有时需要将字符串转换为数组。本文将介绍怎样使用MySQL将字符串转换为数组。
步骤
MySQL提供了SUBSTRING_INDEX()函数,可以将字符串依照指定的分隔符分割成数组。该函数有三个参数,第一个参数是要分割的字符串,第二个参数是分隔符,第三个参数是要返回的数组元素个数。例如:
SELECTSUBSTRING_INDEX('apple,banana,orange',',',2);该语句将返回“apple,banana”。
如果没法肯定要返回的数组元素个数,可使用REGEXP和GROUP_CONCAT()函数来实现。GROUP_CONCAT()函数将多个字符串合并为一个字符串,并使用指定的分隔符分隔。使用REGEXP函数来将分隔符替换为空格。例如:
SET@str='apple,banana,orange';SET@delimiter=',';SELECTGROUP_CONCAT(SUBSTRING_INDEX(@str,@delimiter,n),'')FROM(SELECT1+units.i+tens.i10ASnFROM(SELECT0ASiUNIONSELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6UNIONSELECT7UNIONSELECT8UNIONSELECT9)ASunits,(SELECT0ASiUNIONSELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6UNIONSELECT7UNIONSELECT8UNIONSELECT9)AStensORDERBYn)ASnumbersWHEREn<=1+LENGTH(@str)-LENGTH(REPLACE(@str,@delimiter,''));该语句将返回“applebananaorange”。
上述方法返回的是字符串,如果需要返回数组,可使用CAST()函数将字符串转换为数组。例如:
SET@str='apple,banana,orange';SET@delimiter=',';SELECTCAST(CONCAT('['',REPLACE(GROUP_CONCAT(SUBSTRING_INDEX(@str,@delimiter,n),'','')),'']')ASJSON)FROM(SELECT1+units.i+tens.i10ASnFROM(SELECT0ASiUNIONSELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6UNIONSELECT7UNIONSELECT8UNIONSELECT9)ASunits,(SELECT0ASiUNIONSELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6UNIONSELECT7UNIONSELECT8UNIONSELECT9)AStensORDERBYn)ASnumbersWHEREn<=1+LENGTH(@str)-LENGTH(REPLACE(@str,@delimiter,''));该语句将返回“[‘apple’,‘banana’,‘orange’]”。
桂&哥&网&络www.guIgEge.cn
TOP