2

家番号を並べ替える方法を探しています。ほとんどが数字ですが、文字が追加されているものもあるため、数字は文字列として保存されます。例えば:

  • 1002
  • 29C
  • 1
  • 205
  • 105A

これらを以下のように注文する方法はありますか?

  • 1
  • 29C
  • 105A
  • 205
  • 1002
4

2 に答える 2

3

これがあなたが望むものです:私はあなたが使っていることを望みますSQL SERVER

select * from tbl order by 
case when 
    PATINDEX('%[^0-9]%',val) = 0 
THEN 
    val
ELSE
    cast(Left(val,PATINDEX('%[^0-9]%',val)-1) as int) 
END

ライブデモ

于 2013-01-11T05:29:22.293 に答える
0

別の方法

select * from tbl order by
stuff(val+'a',patindex('%[^0-9]%',val+'a'),len(val),'')*1
于 2013-01-11T07:05:50.183 に答える