首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按分列内容排序

问按分列内容排序
EN

Stack Overflow用户
提问于 2016-06-16 05:20:25
回答 2查看 123关注 0票数 1

我有一列名为id:

代码语言:javascript
复制
1
1.1
1.2
1.2.1
1.2.2
1.19.1.1
1.2.3.1
1.2.3.2
1.19.1
1.19.1.2

..。等等。我想要做的是包括一个按顺序划分字符串的语句,使之变成这样:

代码语言:javascript
复制
1
1.1
1.2
1.2.1
1.2.2
1.2.3.1
1.2.3.2
1.19.1
1.19.1.1
1.19.1.2

..。等等..。我该怎么做这样的事?

我尝试过这个解决方案,按分列排序,但是当数字的长度不一样时,它不能工作

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-16 06:19:48

我通过拆分列尝试了这个解决方案顺序,但是当数字长度不相同时,不工作

您可以让它们包含相同数量的“”。或是代币。例如,如果你知道最多可以有4个点(例如。1.1.1.1.1)然后可以运行这个脚本来连接剩余的".0“令牌:

代码语言:javascript
复制
create table mytable(id varchar);

insert into mytable(id)
values  ('1'), ('1.1'), ('1.2'), ('1.2.1'), ('1.2.2'), ('1.19.1.1'), ('1.2.3.1'), ('1.2.3.2'), ('1.19.1'), ('1.19.1.2');

select id as original, id||
  case when length(id) - length(replace(id,'.','')) = 0 then ".0.0.0.0"
       when length(id) - length(replace(id,'.','')) = 1 then ".0.0.0"
       when length(id) - length(replace(id,'.','')) = 2 then ".0.0" 
       when length(id) - length(replace(id,'.','')) = 3 then ".0" 
  end as computed
from mytable;

您可以运行脚本这里 (每次运行每个sql命令)来测试它。

结果:

代码语言:javascript
复制
----------------------------
| original   |  computed   |
----------------------------
| 1          |  1.0.0.0.0  |
| 1.1        |  1.1.0.0.0  |
| 1.2        |  1.2.0.0.0  |
| 1.2.1      |  1.2.1.0.0  |
| 1.2.2      |  1.2.2.0.0  |
| 1.19.1.1   |  1.19.1.1.0 |
| 1.2.3.1    |  1.2.3.1.0  |
| 1.2.3.2    |  1.2.3.2.0  |
| 1.19.1     |  1.19.1.0.0 |
| 1.19.1.2   |  1.19.1.2.0 |
----------------------------

在此转换之后,您可以应用您提到的脚本。

票数 2
EN

Stack Overflow用户

发布于 2016-06-16 07:08:38

据我所知,您需要MS Access SQL的解决方案,而不是MS SQL。如果是这样的话,那么您所提到的主题中的古斯塔夫解工作得很好,没有任何变化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37850432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档