Mysql实现split函数
来源:互联网 发布:mac触控板左键失灵 编辑:程序博客网 时间:2024/05/16 05:43
一个朋友遇到点问题,想在mysql里把一段用固定符号分隔的字符串,按分隔符分别列出来。就是一个典型的split应用,但是mysql却没有自带这个函数,在网上搜了一把。可以通过自建函数来解决,以下的函数来自互联网。
DELIMITER $$CREATE FUNCTION `func_get_split_string_total`(f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11)BEGIN return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));END$$DELIMITER ; DELIMITER $$CREATE FUNCTION `func_get_split_string`(f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8BEGIN declare result varchar(255) default ''; set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1)); return result;END$$DELIMITER ;
需要设置下参数:
SET GLOBAL log_bin_trust_function_creators = 1;
下面我们来测试下:
CREATE TABLE "t" ( -> "t1" varchar(100) DEFAULT NULL, -> "t2" int(11) DEFAULT NULL -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8; mysql> insert into t(t1,t2) values('a,b,c,d',1);Query OK, 1 row affected (0.00 sec) mysql> insert into t(t1,t2) values('a b c d',2);Query OK, 1 row affected (0.00 sec) mysql> select * from t;+---------+------+| t1 | t2 |+---------+------+| a,b,c,d | 1 | | a b c d | 2 | +---------+------+2 rows in set (0.00 sec)
首先用func_get_split_string_total函数得到符合匹配的数量
mysql> select func_get_split_string_total(t1,',') from t where t2=1;+-------------------------------------+| func_get_split_string_total(t1,',') |+-------------------------------------+| 4 | +-------------------------------------+1 row in set (0.00 sec)
然后用func_get_split_string得出你想要的字符串
mysql> select func_get_split_string(t1,',',1) from t where t2=1;+---------------------------------+| func_get_split_string(t1,',',1) |+---------------------------------+| a | +---------------------------------+1 row in set (0.00 sec) mysql> select func_get_split_string(t1,',',2) from t where t2=1;+---------------------------------+| func_get_split_string(t1,',',2) |+---------------------------------+| b | +---------------------------------+1 row in set (0.00 sec) mysql> select func_get_split_string(t1,',',3) from t where t2=1;+---------------------------------+| func_get_split_string(t1,',',3) |+---------------------------------+| c | +---------------------------------+1 row in set (0.00 sec) mysql> select func_get_split_string(t1,',',4) from t where t2=1;+---------------------------------+| func_get_split_string(t1,',',4) |+---------------------------------+| d | +---------------------------------+1 row in set (0.00 sec)
当然,这只是个思路,如果你想把所有字符串都列出来,可以写个过程,在里面循环一下。
希望能对这位朋友有帮助。
- Mysql实现split函数
- Mysql实现split函数
- Mysql实现split函数
- MYSQL-实现split函数
- mysql函数split功能实现,mysql分割字符串split
- mysql中split函数
- MySql Split函数
- mysql中split函数
- MySQL函数 split
- MySQL里实现类似SPLIT的分割字符串的函数
- Mysql实现split函数——支持多字符分割
- 编写MYSQL插件(UDF)使其实现Split函数
- Mysql截取字符串split函数的实现以及使用范例
- MySQL里实现类似SPLIT的分割字符串的函数
- MySQL里实现类似SPLIT的分割字符串的函数
- mysql 中自定义实现split功能的函数
- SQL实现Split 函数
- Oracle 实现split函数
- 小兔和乌龟
- NoSql Cassandra 详解
- CAsyncSocket对象不能跨线程之分析
- 数据、数据项和数据元——DO-178B/ED-12B学习笔记之八
- Android/Ophone 中的悬浮对话框和即点即关对话框
- Mysql实现split函数
- j2ME中 lwuit实现按钮缩放功能代码解析
- 使用flex 做关键词、正则表达式过滤
- 地方站半年月入过万成为地方站老大的经验分享
- 驱动程序与应用程序之间的通信
- 好的文档很必要
- 在驱动层和应用层建立准消息机制
- 2010/9/6
- foreach的用法总结