首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

早晨起来问一个数据库方面的(按某字段排序),该怎么处理

2012-03-06 
早晨起来问一个数据库方面的(按某字段排序)MSSQL2000+VB6.0现在有一个表(没有KEY)ROWDESCfValue1p152p203p

早晨起来问一个数据库方面的(按某字段排序)
MSSQL     2000   +   VB6.0

现在有一个表(没有KEY)
ROW                   DESC                           fValue
1                         p                                   15
2                         p                                   20
3                         p                                   23
4                         v                                   15
5                                                               16
6                         v                                     21
7                         m                                     22
8                         m                                     23

需要按指定规则排序     比如     V     ,   M   ,P     排序后改变行号继续保存在这个表中
可以增加临时表,方便导动数据等,
结果应该是
ROW                     DESC                             fValue
1                           V                                       15       (其中排序关键字段相同的确时候,
2                           V                                       21         行做第二排序关键字)
3                           M                                       22
4                           M                                       23
5                           P                                       15
6                           P                                       20


7                           P                                       23
8                                                                   16         (不在指定范围的空格放最后)

[解决办法]
--創建測試環境
Create Table TEST
(ROW Int,
[DESC] Varchar(10),
fValue Int)
Insert TEST Select 1, 'p ', 15
Union All Select 2, 'p ', 20
Union All Select 3, 'p ', 23
Union All Select 4, 'v ', 15
Union All Select 5, ' ', 16
Union All Select 6, 'v ', 21
Union All Select 7, 'm ', 22
Union All Select 8, 'm ', 23
GO
--創建存儲過程
Create ProceDure SP_TEST(@OrderBy Varchar(100))
As
Begin
Create Table #T(ROW Int Identity(1, 1), [DESC] Varchar(10), fValue Int)
Insert #T ([DESC], fValue) Select [DESC], fValue From TEST Where Rtrim([DESC]) != ' ' Order By CharIndex([DESC], @OrderBy), ROW
Insert #T ([DESC], fValue) Select [DESC], fValue From TEST Where Rtrim([DESC]) = ' '
Select * From #T
Drop Table #T
End
GO
--測試
EXEC SP_TEST 'V,M,P '
GO
--刪除測試環境
Drop Table TEST
Drop ProceDure SP_TEST
--結果
/*
ROWDESCfValue
1v15
2v21
3m22
4m23
5p15
6p20
7p23
816
*/

热点排行