家番号を並べ替える方法を探しています。ほとんどが数字ですが、文字が追加されているものもあるため、数字は文字列として保存されます。例えば:
- 1002
- 29C
- 1
- 205
- 105A
これらを以下のように注文する方法はありますか?
- 1
- 29C
- 105A
- 205
- 1002
家番号を並べ替える方法を探しています。ほとんどが数字ですが、文字が追加されているものもあるため、数字は文字列として保存されます。例えば:
これらを以下のように注文する方法はありますか?
これがあなたが望むものです:私はあなたが使っていることを望みます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
別の方法
select * from tbl order by
stuff(val+'a',patindex('%[^0-9]%',val+'a'),len(val),'')*1