数据库查询结果的动态排序(4)
2024-07-21 02:10:47
供稿:网友
假设我们把更多的货主加入到表,如listing 4所示(shipperid列有identity属性,sql server自动为该列生成值)。
【listing 4:向shippers表插入一些记录】
insert into shippers values('shipper4', '(111) 222-9999')
insert into shippers values('shipper5', '(111) 222-8888')
insert into shippers values('shipper6', '(111) 222-7777')
insert into shippers values('shipper7', '(111) 222-6666')
insert into shippers values('shipper8', '(111) 222-5555')
insert into shippers values('shipper9', '(111) 222-4444')
insert into shippers values('shipper10', '(111) 222-3333')
现在调用存储过程,指定shipperid作为排序列:
exec getsortedshippers 'shipperid'
表一显示了存储过程的输出。shipperid等于10的记录位置错误,因为这个存储过程的排序输出是字符排序,而不是整数排序。按照字符排序时,10排列在2的前面,因为10的开始字符是1。
表一:记录排序错误的查询结果
shipperid companyname phone
1 speedy express (503) 555-9831
10 shipper10 (111) 222-3333
2 united package (503) 555-3199
3 federal shipping (503) 555-9931
4 shipper4 (111) 222-9999
5 shipper5 (111) 222-8888
6 shipper6 (111) 222-7777
7 shipper7 (111) 222-6666
8 shipper8 (111) 222-5555
9 shipper9 (111) 222-4444