mysql中解决1.1,1.1.1,10.1序号排序问题
2013-03-13 20:17
736 查看
数据库中有排序字段(varchar类型)内容是:
1
1.1
2
2.1
2.1.1
10.1
想到的解决办法是将该字段分隔合并:
如
1.1分隔合并成001001
2分隔合并成002
10.1分隔合并称010001
然后升序排序即可。
附实现函数
create definer=`root`@`localhost` function `split_pad`(str varchar (1000),delimiter varchar(1)) returns varchar(200)
begin
declare cur_str varchar(200);
declare sub_len int;
declare sub_str varchar(200);
declare ret_str varchar(200);
declare loop_count int;
set cur_str = str;
set sub_len = -1;
set ret_str = '';
set loop_count = 0;
repeat
set cur_str = substring(cur_str,sub_len + 2);
set sub_str = substring_index(cur_str,delimiter,1);
set sub_len = length(sub_str);
if sub_len !=0 then
set ret_str = concat(ret_str,lpad(sub_str,3,'0'));
end if;
set loop_count = loop_count + 1;
until sub_len = 0
end repeat;
return ret_str;
end;
1
1.1
2
2.1
2.1.1
10.1
想到的解决办法是将该字段分隔合并:
如
1.1分隔合并成001001
2分隔合并成002
10.1分隔合并称010001
然后升序排序即可。
附实现函数
create definer=`root`@`localhost` function `split_pad`(str varchar (1000),delimiter varchar(1)) returns varchar(200)
begin
declare cur_str varchar(200);
declare sub_len int;
declare sub_str varchar(200);
declare ret_str varchar(200);
declare loop_count int;
set cur_str = str;
set sub_len = -1;
set ret_str = '';
set loop_count = 0;
repeat
set cur_str = substring(cur_str,sub_len + 2);
set sub_str = substring_index(cur_str,delimiter,1);
set sub_len = length(sub_str);
if sub_len !=0 then
set ret_str = concat(ret_str,lpad(sub_str,3,'0'));
end if;
set loop_count = loop_count + 1;
until sub_len = 0
end repeat;
return ret_str;
end;
相关文章推荐
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MySQL中对varchar类型排序问题的解决
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- 巧妙解决mysql删除或添加记录时,对自增主键ID进行重新排序的问题
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MYSQL varchar 类型 排序错乱问题的解决
- mysql分页加排序数据重复问题解决方案
- mysql 用case when 解决比较时间大小后在排序的问题
- MySQL中按照多字段排序及问题解决
- 解决一个mysql关于按文章以及评论的最早时间的排序问题
- mysql查询优化--临时表和文件排序(Using temporary; Using filesort问题解决)
- 解决 mysql in 查询排序问题
- MySQL排序limit出现的问题(已解决)
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MySQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MYSQL varchar 类型 排序错乱问题的解决
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- Hibernate4解决MySql中文排序问题
- MYSQL因为排序规则不同导致的问题的解决办法
- 解决mysql出现“the table is full”的问题