mysql内 字符串的比较

alan_219_2008 2012-03-15 01:48:42
现在数据库中有一列

0,9,6
0,13,7

类似这种形式的数据 类型是字符串

现在希望他排序后返回

排序的规则是这样的 根据逗号来间隔 越前面的数字小 越排在前面

比如上面的 先是0与0相比 相等 则 将9与13比 13大 所以这条记录排在后面
0,9,6
0,13,7

若是这种
0,9,6,13
0,9,3
第一个0相等 第二个9相等 第三个 6大 则排成
0,9,3
0,9,6,13




mysql里怎样才能按这种方式排序后查出数据!
...全文
402 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan_219_2008 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwwwb 的回复:]

没有仔细看我的代码吗
SELECT * FROM (
SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',……
[/Quote]

你这个没试验过。。 最后把字符串扩展成16位 直接数据库里比较的
wwwwb 2012-03-19
  • 打赏
  • 举报
回复
没有仔细看我的代码吗
SELECT * FROM (
SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',',-1) AS NZ

FROM `pre_test` a1 LEFT JOIN lsb1 b ON
(LENGTH(a1.NAME)-LENGTH(REPLACE(a1.NAME,',','')))+1>=b.id ORDER BY A1.ID,B.ID) f
GROUP BY NAME) f ORDER BY na,NAME

生成LSB1,字段ID,内容 1-100000
NAME字段内容为0,13,7
0,9,6,13

有1辅助表LSB1
alan_219_2008 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwwwa 的回复:]

ID的值为1-100000
[/Quote]

还是不太明白。。你的这条sql是有两个表吗?
WWWWA 2012-03-16
  • 打赏
  • 举报
回复
ID的值为1-100000
alan_219_2008 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wwwwa 的回复:]

SELECT * FROM (
SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',',-1) AS NZ
……
[/Quote]

生成LSB1,字段ID,内容 1-100000

这个1-100000 是什么意思?
WWWWA 2012-03-15
  • 打赏
  • 举报
回复
SELECT * FROM (
SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',',-1) AS NZ

FROM `pre_test` a1 LEFT JOIN lsb1 b ON
(LENGTH(a1.NAME)-LENGTH(REPLACE(a1.NAME,',','')))+1>=b.id ORDER BY A1.ID,B.ID) f
GROUP BY NAME) f ORDER BY na,NAME

生成LSB1,字段ID,内容 1-100000
NAME字段内容为0,13,7
0,9,6,13
alan_219_2008 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwa 的回复:]

0,13,7
0,9,6,13
怎么排序?
[/Quote]

0,9,6,13
0,13,7

这样排 先以前面的数据为准 如果前面的相等再看后一位的
WWWWA 2012-03-15
  • 打赏
  • 举报
回复
0,13,7
0,9,6,13
怎么排序?
alan_219_2008 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rczjp 的回复:]

replace替换,直接排序
[/Quote]

怎么replace法?
rczjp 2012-03-15
  • 打赏
  • 举报
回复
replace替换,直接排序

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧