sql 排序

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:55:09
表中某字段值如下
10,1,2,3,4,5,6,7,附,南
想让查询结果顺序为
1,2,3,4,5,6,7,10,附,南
直接用order by结果是
1,10,2,3,4,5,6,7,附,南
不是想要的

加一列计算列sort_id,sort_id在col长度大于1时,前面加9,否则就等于col。oracle的写法:
select col,
case when length(col)=1 then col
when length(col)>1 '9'||col sort_id
from t
order by sort_id asc
这种做法只是解决楼主的问题,只是一个头疼医头脚疼医脚的做法。不具有普遍性。如果想彻底解决这个问题需要在表中另加一列专门用来排序的字段

select * from table order by id

没有那两个汉字还好,有汉字的话只能这样了

1,2,3,4,5,6,7,10排序方式是按数字型排列

照你说的那样只能是字符型排列,不可能出现你所说的结果

排不了啊!

1,2,3,4,5,6,7,10

这样还可以

select * from test1 order by test_id:从小到大的排列顺序

可是你加了两个文字

………………头晕!

正确

order by 语句可以用于排序,
具体参数,你查相应教程和资料,看着使用;

SELECT [id] FROM [mydata].[dbo].[mytable] order by DATALENGTH(id),id
保证正确