日期:2014-05-19  浏览次数:20528 次

字符串有数字排序
Name
  翻页1  
  翻页10  
  翻页11  
  翻页12  
  翻页2  
  翻页3  
  翻页4  
  翻页5    
  翻页6  


比如一列:Name  
order   by   Name   之后,就是上面的样子,但我想要的结果是Name
  翻页1  
  翻页2  
  翻页3  
  翻页4  
  翻页5    
  翻页6  
  翻页10  
  翻页11  
  翻页12  


有什么方法?




------解决方案--------------------
Select *,cnt = cast(stuff(Name,1,PATINDEX( '%[0-9]% ' , Name)-1, ' ') as int) from tb order by cnt
------解决方案--------------------
定义一个函数只取数字
create function roy_f(@name varchar(1000))
returns varchar(1000)
as
begin
while patindex( '%[^0-9]% ',@name)> 0
set @name=stuff(@name ,patindex( '%[^0-9]% ',@name ),1, ' ')
return @name
end

declare @a varchar(100)
set @a= 'asrev11232123avsekr '

select * from ta order by dbo.ror_f(列名)asc
select a=dbo.roy_f( 'xda11232adfa123adfa ')