2

を使用して Access データベースから情報を取得しようとしていますOleDbConnection。文字列形式の一連の数値を含む列で結果を並べ替えようとしています。

結果を自然な順序 (例: 1、2、10、20 対 1、10、2、20) にしたかったので、対象の列のデータを整数に変換し、結果を並べ替えました。

"SELECT Drawing, Sheet FROM TableName ORDER BY CINT(Sheet) ASC"

これは問題なく機能しますが、テーブル データに文字の接尾辞が付いた値 (1A、2B など) がある場合を除きます。これらのケースでは、上記のコマンドは明らかに失敗します。

結果を 1、2、2A、2B、3、3A などのように並べ替えたいと思います...

それで、これについてどうやって行くのですか?といくつかの条件ステートメントを使用する例を見てきましREGEXPたが、どうやら MS SQL は をサポートしていませんREGEXP。だから私は立ち往生しています。アイデアをいただければ幸いです。

4

1 に答える 1

3

Access セッションの外部から実行されるクエリで正規表現を使用する方法はありません。クエリが Access セッション内で実行される場合、カスタム VBA 関数をRegExp. しかし、いずれにせよ、正規表現のアプローチは、この状況ではやり過ぎのように思えます。必要なものを簡単に手に入れることができますVal()

Val 関数は、文字列の数字から数値を返します。文字に当たると文字列の読み取りを停止します。

イミディエイト ウィンドウの例を次に示します。

? Val("2A")
 2 

このようにクエリで使用します...

SELECT Drawing, Sheet
FROM TableName
ORDER BY Val(Sheet), Sheet;
于 2013-09-26T19:00:02.360 に答える