このデータが入力されたという列がありNumber
ます(列はncharです):
1
2
1091
3
20
2B
この順序を与える select ステートメントが必要です。
1
2
2B
3
20
1091
どうすればこれを達成できますか? 助けてくれてありがとう
(編集済み)
このデータが入力されたという列がありNumber
ます(列はncharです):
1
2
1091
3
20
2B
この順序を与える select ステートメントが必要です。
1
2
2B
3
20
1091
どうすればこれを達成できますか? 助けてくれてありがとう
(編集済み)
最初の非数値の場所を見つけた後、数値に変換することで、いくつかのトリックを実行できます。最後にランダムな文字を追加すると、元の文字列にアルファベットが含まれていなくても、すべての文字列が同じように扱われます。
SELECT [Number] FROM dbo.TableName
ORDER BY CONVERT(INT, LEFT(Number, PATINDEX('%[^0-9]%', Number + 'z')-1));
PATINDEX を使用して、このSQL Fiddleコードを確認してください。@AaronBertrand は、テスト中に答えました。
いくつかの価値と情報を追加するには、この SQLServerCentral リンクを確認してください。ここでさらに回答を見つけることができます。
Microsoft SQL 2005 のこのNatural (human alpha-numeric) sort を確認してください。多くの有用な回答とバリエーションがあります。
あなたが探しているのはNATURAL SORTと呼ばれ、ほとんどのシステムが提供する通常のソートとは異なります。ここ Stack Overflow で、さまざまな一般的な SQL エンジンの自然な並べ替えについて説明している投稿をいくつか見つけましたSQL Server
。
ここでのアイデアは、解決策を始めるきっかけになるかもしれません。
Oracle: SQL クエリで「自然な」オーダーバイを実装するにはどうすればよいですか?
ただし、SQL エンジンの構文を変更する必要がある場合があります。
MYSQL の別のバージョンが見つかりました:
SQL Server 用のものはまだ見つかりません。
編集3
ああ、これはいくつかの SQL Server のアイデアもカバーしています。