我有一个表单位
单位名称 |
---|
单元1 |
单元 2b |
单元 2c |
单元 2a |
单元 10 |
单元 3a |
单元 3c |
单元 11 |
我想排序相同
单位名称 |
---|
单元1 |
单元 2a |
单元 2b |
单元 2c |
单元 3a |
单元 3c |
单元 10 |
单元 11 |
我们如何在 t-sql 中实现这一点?
DDL
create table units (unitname varchar(20))
insert into units values ('unit 1'),('unit 2b'),('unit 2c'),
('unit 2a'),('unit 10'),('unit 3a'),('unit 3c'),('unit 11')
对于给定的示例值:
这个想法是按可以成功转换为整数的最大字符数排序,打破与最终字符的联系。
或者,这个想法插入足够的前缀零,字符排序按预期工作:
两者都返回:
db<>fiddle在线演示
更好的表设计可能是:
我尝试了以下方法
虽然这适用于我的情况,但有人可以提出更好的方法吗?
我会做这样的事情(出于时间目的用伪代码编写):