我有下表:
create table #tbl
(
product_id nvarchar(50)
)
insert into #tbl values ('011014-A11')
insert into #tbl values ('011014-A10')
insert into #tbl values ('011014')
insert into #tbl values ('011014-A1')
insert into #tbl values ('011014-A2')
我想订购这样的产品ID(从最小到最大):
011014
011014-A1
011014-A2
011014-A10
011014-A11
这是我尝试过的,但它不起作用:
select product_id
from #tbl
order by product_id desc
我该怎么做?
我如何获得最好的product_id?
我试过这个,但它没有工作:
select top 1 product_id
from #tbl
order by product_id desc
答案 0 :(得分:2)
尝试以下查询以按预期顺序获取结果。
<强> Fiddle demo 强>
Select product_id
From tbl --Please change table name to #tbl in your actual query
Order by len(product_id), product_id
答案 1 :(得分:0)
您已经接受了Kaf的答案,它可能适合您,但只有前8个字符相同才能正常工作。例如,如果您添加了011014-B1
的值,则结果将为:
011014
011014-A1
011014-A2
011014-B1
011014-A10
011014-A11
如果您的模式是一致的(按前8个字符排序,然后按照后面的“数字”排序,这可能对您更有效:
Select product_id
From #tbl
Order by LEFT(product_id,8), CAST(SUBSTRING(product_id,9,9) AS INT)