SQL - 使用字母数字字符排序

标签 sql sql-server tsql sql-server-2005

我有下表:

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

最佳答案

尝试以下查询以按您预期的顺序获得结果。

Fiddle demo

Select product_id
From tbl              --Please change table name to #tbl in your actual query
Order by len(product_id), product_id

关于SQL - 使用字母数字字符排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048295/

相关文章:

Mysql、handlersocket 和分区?

sql - 如何查询具有 2 个外键的表?

c# - Linq to SQL 可空整数?

sql - 如何在Sql中为临时表设置order by

php - 如何使用 SQL Server 存储和检索图像 (Server Management Studio)

SQL 更改表以添加列,它会执行任何操作 "scary"吗?

tsql - 将 GUID 参数添加到 sql 字符串

java - 即使 sql 查询不应返回任何记录,JUnit 测试仍然通过

sql - 如何跟踪 SQL 更新的进度?

sql-server - 我怎样才能得到一个特定索引列首先出现的索引列表?