求一个查询语句
现在有一个表
ID DESC
1 EST
2 MS
3 CS
4 " "
5 TM
6 CM
要求按照DESC排续,小到大 " "的话就放在最后面
SELECT * FORM TABLE1 ORDER BY DESC
结果
4 " "
1 EST
6 CM
3 CS
.....
空DESC跑最上面去了
结果应该是
6 CM
3 CS
.....
5 TM
4 " "
谢谢啦
[解决办法]
Create table TABLE1
(
a int,
b char(4)
)
insert into TABLE1 (a,b)
Select 1, 'EST '
Union All
Select 2, 'MS '
Union All
Select 3, 'CS '
Union All
Select 4, ' '
Union All
Select 5, 'TM '
Union All
Select 6, 'CM '
GO
Select * From TABLE1 Order By Case IsNull(b, ' ') When ' ' Then 1 Else 0 End, b
GO
Drop Table TABLE1
--Result
/*
6CM
3CS
1EST
2MS
5TM
4
*/
[解决办法]
用你提供的数据,在SQL数据库上试过鱼的写法完全正确
我的那个改一下也可以
select a,b
from tb
order by case b when ' " " ' then '1 '+b else '0 '+b end
鱼的排序道理就是先按b字段的值决定一个1或0的数字排序,再按b字段排序
我的这个也是一样的道理,如果b是 " ",则在原字段前加1,否则加0,这样排序1自然都会在0之后。
因为你实际情况比较复杂,所以你可以从代码里先debug.print你的SQL语句,看看有没有什么错误,然后放入查询分析器中去调试