求救:SQl语句排序问题

lincong1978 2011-09-08 10:18:44
表Table
名称N 代码T 顺序S
纱 12 1
棉 13 2
绦纱 122d 1
布纱 12b6 2
氯绦纱 122dee 1
氨绦纱 122dfa 2
纯棉 13e9 1

现在想用一条SQL语句按顺序排成这样:

纱 12 1
绦纱 122d 1
氯绦纱 122dee 1
氨绦纱 122dfa 2
布纱 12b6 2
棉 13 2
纯棉 13e9 1

请各位高手帮解决一下,不胜感激!!!!
...全文
64 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
勿勿 2011-09-12
  • 打赏
  • 举报
回复
select * from [table] order by cast(代码T as varchar)
koumingjie 2011-09-12
  • 打赏
  • 举报
回复

select * from [table] order by 代码T
Cideason 2011-09-12
  • 打赏
  • 举报
回复
直接 排序 即可
select * from 表Table
oder by 代码T asc, 顺序S asc

dawugui 2011-09-12
  • 打赏
  • 举报
回复
create table [table](名称N varchar(10),代码T varchar(10),顺序S int)
insert into [table] values('纱' , '12' , 1)
insert into [table] values('棉' , '13' , 2)
insert into [table] values('绦纱' , '122d' , 1)
insert into [table] values('布纱' , '12b6' , 2)
insert into [table] values('氯绦纱', '122dee', 1)
insert into [table] values('氨绦纱', '122dfa', 2)
insert into [table] values('纯棉' , '13e9' , 1)
go

select * from [table] order by cast(代码T as varchar)

drop table [table]

/*
名称N 代码T 顺序S
---------- ---------- -----------
纱 12 1
绦纱 122d 1
氯绦纱 122dee 1
氨绦纱 122dfa 2
布纱 12b6 2
棉 13 2
纯棉 13e9 1

(所影响的行数为 7 行)
*/
dawugui 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lincong1978 的回复:]
谢谢各位帮助,尤其是fredrickhu,但我有个问题是我用的是SQL 2000,不能用patindex,不知道要怎么改呢?
[/Quote]

select * from [table] order by cast(代码T as varchar)
lincong1978 2011-09-12
  • 打赏
  • 举报
回复
谢谢各位帮助,尤其是fredrickhu,但我有个问题是我用的是SQL 2000,不能用patindex,不知道要怎么改呢?

[Quote=引用 3 楼 fredrickhu 的回复:]
SQL code

----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-09-08 10:26:37
-- Verstion:
-- Microsoft SQL Server 2008 R2 (RTM……
[/Quote]
geniuswjt 2011-09-08
  • 打赏
  • 举报
回复

if object_id('[tb]') is not null drop table [tb]
create table [tb] (名称N varchar(6),代码T varchar(6),顺序S int)
insert into [tb]
select '纱','12',1 union all
select '棉','13',2 union all
select '绦纱','122d',1 union all
select '布纱','12b6',2 union all
select '氯绦纱','122dee',1 union all
select '氨绦纱','122dfa',2 union all
select '纯棉','13e9',1

select * from [tb] order by right(名称N,1) desc,
case when right(名称N,1)='纱' then 顺序S end,
case when right(名称N,1)='棉' then 顺序S end desc

drop table [tb]

/*
纱 12 1
绦纱 122d 1
氯绦纱 122dee 1
氨绦纱 122dfa 2
布纱 12b6 2
棉 13 2
纯棉 13e9 1
--小F-- 2011-09-08
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-09-08 10:26:37
-- Verstion:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([名称N] varchar(6),[代码T] varchar(6),[顺序S] int)
insert [tb]
select '纱','12',1 union all
select '棉','13',2 union all
select '绦纱','122d',1 union all
select '布纱','12b6',2 union all
select '氯绦纱','122dee',1 union all
select '氨绦纱','122dfa',2 union all
select '纯棉','13e9',1
--------------开始查询--------------------------
select * from tb order by patindex('%[0-9]%',[代码T]),代码T
----------------结果----------------------------
/* 名称N 代码T 顺序S
------ ------ -----------
纱 12 1
绦纱 122d 1
氯绦纱 122dee 1
氨绦纱 122dfa 2
布纱 12b6 2
棉 13 2
纯棉 13e9 1

(7 行受影响)
*/
areswang 2011-09-08
  • 打赏
  • 举报
回复
order by left(代码T,2),顺序S
??
geniuswjt 2011-09-08
  • 打赏
  • 举报
回复
您敢说下您这排序有啥规律么?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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