SQL排序 40Alice814108771]

发布时间:2017-2-23 10:26:47 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL排序 40Alice814108771]",主要涉及到SQL排序 40Alice814108771]方面的内容,对于SQL排序 40Alice814108771]感兴趣的同学可以参考一下。

有个表 table 按其中一个字段排序,这个字段ph 但是这个字段有下面一些值(拉出其中一段) 101201 101202 101203 101204 101205 101206 101207 101208 101209 101210 10121001012101 1012102 1012103 1012104 1012105 1012106 1012107 1012108 1012109 101211 10121101012111 1012112 101212 101213 101214 101215 101216 101217 101218 101219 101220 101221 101222 101223 101224 101225 101226 101227 101228 101229 101230 101231 101232 101233 101234 101235 101236 101237 101238 101239 101240 101241 101242 101243 101244 101245 101246 101247 101248 101249 101250 101251 101252 101253 101254 101255 101256 101257 101258 101259 101260 101261 101262 101263 101264 101265 101266 101267 101268 101269 101270 101271 101272 101273 101274 101275 101276 101277 101278 101279 101280 101281 101282 101283 101284 101285 101286 101287 101288 101289 101290 101291 101292 101293 101294 101295 101296 101297 101298 101299当我select * from table order by ph asc,但是我要的效果不是这样的,注意看标注红色的,我是要类似101209后面是101210,然后继续101211总之是前面四位要保持一定的排序譬如我前四位是1011***,那么1011***所有的肯定要在1012之前,但是在1012这里面,后面几位,又按照0,1,2,3,~100……max,排序

select * from table order by cast(left(ph,4) as int) , cast(substring(ph,5,len(ph)) as int)

order by convert(varchar,ph)

select * from table order by left(ph,4)+0, right(ph,len(ph)-4)+0

select * from tb order by left(ph,4) substring(ph,5,len(ph)

---------------------------------------------------------------- -- Author  :fredrickhu(小F,向高手学习) -- Date    :2011-09-27 13:32:04 -- 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]([col] bigint) insert [tb] select 101201 union all select 101202 union all select 101203 union all select 101204 union all select 101205 union all select 101206 union all select 101207 union all select 101208 union all select 101209 union all select 101210 union all select 10121001012101 union all select 1012102 union all select 1012103 union all select 1012104 union all select 1012105 union all select 1012106 union all select 1012107 union all select 1012108 union all select 1012109 union all select 101211 union all select 10121101012111 union all select 1012112 union all select 101212 union all select 101213 union all select 101214 union all select 101215 union all select 101216 union all select 101217 union all select 101218 union all select 101219 union all select 101220 union all select 101221 union all select 101222 union all select 101223 union all select 101224 union all select 101225 union all select 101226 union all select 101227 union all select 101228 union all select 101229 union all select 101230 union all select 101231 union all select 101232 union all select 101233 union all select 101234 union all select 101235 union all select 101236 union all select 101237 union all select 101238 union all select 101239 union all select 101240 union all select 101241 union all select 101242 union all select 101243 union all select 101244 union all select 101245 union all select 101246 union all select 101247 union all select 101248 union all select 101249 union all select 101250 union all select 101251 union all select 101252 union all select 101253 union all select 101254 union all select 101255 union all select 101256 union all select 101257 union all select 101258 union all select 101259 union all select 101260 union all select 101261 union all select 101262 union all select 101263 union all select 101264 union all select 101265 union all select 101266 union all select 101267 union all select 101268 union all select 101269 union all select 101270 union all select 101271 union all select 101272 union all select 101273 union all select 101274 union all select 101275 union all select 101276 union all select 101277 union all select 101278 union all select 101279 union all select 101280 union all select 101281 union all select 101282 union all select 101283 union all select 101284 union all select 101285 union all select 101286 union all select 101287 union all select 101288 union all select 101289 union all select 101290 union all select 101291 union all select 101292 union all select 101293 union all select 101294 union all select 101295 union all select 101296 union all select 101297 union all select 101298 union all select 101299 --------------开始查询-------------------------- select * from tb order by left(col,4) , substring(ltrim(col),5,len(col)) ----------------结果---------------------------- /*  (110 行受影响) col -------------------- 101201 101202 101203 101204 101205 101206 101207 101208 101209 101210 10121001012101 1012102 1012103 1012104 1012105 1012106 1012107 1012108 1012109 101211 10121101012111 1012112 101212 101213 101214 101215 101216 101217 101218 101219 101220 101221 101222 101223 101224 101225 101226 101227 101228 101229 101230 101231 101232 101233 101234 101235 101236 101237 101238 101239 101240 101241 101242 101243 101244 101245 101246 101247 101248 101249 101250 101251 101252 101253 101254 101255 101256 101257 101258 101259 101260 101261 101262 101263 101264 101265 101266 101267 101268 101269 101270 101271 101272 101273 101274 101275 101276 101277 101278 101279 101280 101281 101282 101283 101284 101285 101286 101287 101288 101289 101290 101291 101292 101293 101294 101295 101296 101297 101298 101299 (110 行受影响) */

看不出上面的这个排序与你说的"不是这样的"有什么区别. create table tb(ph varchar(20)) insert into tb select '101201' insert into tb select '101202' insert into tb select '101203' insert into tb select '101204' insert into tb select '101205' insert into tb select '101206' insert into tb select '101207' insert into tb select '101208' insert into tb select '101209' insert into tb select '101210' insert into tb select '10121001012101' insert into tb select '1012102' insert into tb select '1012103' insert into tb select '1012104' insert into tb select '1012105' insert into tb select '1012106' insert into tb select '1012107' insert into tb select '1012108' insert into tb select '1012109' insert into tb select '101211' insert into tb select '10121101012111' insert into tb select '1012112' insert into tb select '101212' insert into tb select '101213' insert into tb select '101214' insert into tb select '101215' insert into tb select '101216' insert into tb select '101217' insert into tb select '101218' insert into tb select '101219' insert into tb select '101220' insert into tb select '101221' insert into tb select '101222' insert into tb select '101223' insert into tb select '101224' insert into tb select '101225' insert into tb select '101226' insert into tb select '101227' insert into tb select '101228' insert into tb select '101229' insert into tb select '101230' insert into tb select '101231' insert into tb select '101232' insert into tb select '101233' insert into tb select '101234' insert into tb select '101235' insert into tb select '101236' insert into tb select '101237' insert into tb select '101238' insert into tb select '101239' insert into tb select '101240' insert into tb select '101241' insert into tb select '101242' insert into tb select '101243' insert into tb select '101244' insert into tb select '101245' insert into tb select '101246' insert into tb select '101247' insert into tb select '101248' insert into tb select '101249' insert into tb select '101250' insert into tb select '101251' insert into tb select '101252' insert into tb select '101253' insert into tb select '101254' insert into tb select '101255' insert into tb select '101256' insert into tb select '101257' insert into tb select '101258' insert into tb select '101259' insert into tb select '101260' insert into tb select '101261' insert into tb select '101262' insert into tb select '101263' insert into tb select '101264' insert into tb select '101265' insert into tb select '101266' insert into tb select '101267' insert into tb select '101268' insert into tb select '101269' insert into tb select '101270' insert into tb select '101271' insert into tb select '101272' insert into tb select '101273' insert into tb select '101274' insert into tb select '101275' insert into tb select '101276' insert into tb select '101277' insert into tb select '101278' insert into tb select '101279' insert into tb select '101280' insert into tb select '101281' insert into tb select '101282' insert into tb select '101283' insert into tb select '101284' insert into tb select '101285' insert into tb select '101286' insert into tb select '101287' insert into tb select '101288' insert into tb select '101289' insert into tb select '101290' insert into tb select '101291' insert into tb select '101292' insert into tb select '101293' insert into tb select '101294' insert into tb select '101295' insert into tb select '101296' insert into tb select '101297' insert into tb select '101298' insert into tb select '101299' go select * from tb order by ph /* ph -------------------- 101201 101202 101203 101204 101205 101206 101207 101208 101209 101210 10121001012101 1012102 1012103 1012104 1012105 1012106 1012107 1012108 1012109 101211 10121101012111 1012112 101212 101213 101214 101215 101216 101217 101218 101219 101220 101221 101222 101223 101224 101225 101226 101227 101228 101229 101230 101231 101232 101233 101234 101235 101236 101237 101238 101239 101240 101241 101242 101243 101244 101245 101246 101247 101248 101249 101250 101251 101252 101253 101254 101255 101256 101257 101258 101259 101260 101261 101262 101263 101264 101265 101266 101267 101268 101269 101270 101271 101272 101273 101274 101275 101276 101277 101278 101279 101280 101281 101282 101283 101284 101285 101286 101287 101288 101289 101290 101291 101292 101293 101294 101295 101296 101297 101298 101299 (110 行受影响) */ go drop table tb

结贴,不好意思,第一位小童鞋回答得又对又好,,

上一篇:sql优化,头疼啊,菜鸟虚心请教,求指导! 100liuxibei1987]
下一篇:sql server 2008 R2 服务???? 40hao448609471]

相关文章

相关评论