- PR -

言語とDBのソートの違いの回避策

1
投稿者投稿内容
あさけん
会議室デビュー日: 2003/06/30
投稿数: 6
投稿日時: 2003-11-10 12:07
【言語】VB.NET
【DB】SQLServer

帳票の範囲指定画面でFROMとTOの大小比較をしています。
FROMに'b'  TOに'A'を入れると、FROMの方が大きいと判断します。
FROMに'B'  TOに'a'を入れると、FROMの方が大きいと判断しません。
つまり、言語では大文字のA〜Z , 小文字のa〜zの順に判断しているようです。

DBでそのフィールドをソートすると、A , a , B , b の順に並びます。

試しにEXCELの列に入れてソートしてみると、A , a , b , B となり、
大文字と小文字の判断の決まりはないようですが、A(a)〜Z(z)となっているようです。

キャラクターセットによって並びが違う場合の回避策をご存知でしたら教えてください。
Crime
常連さん
会議室デビュー日: 2002/08/26
投稿数: 34
お住まい・勤務地: Japan
投稿日時: 2003-11-10 12:26
こんにちは。

大文字小文字の区別はシステム的に必要となるのでしょうか。
必要にならない場合であれば、UPPER/lower を利用されてみてはどうでしょう。
あさけん
会議室デビュー日: 2003/06/30
投稿数: 6
投稿日時: 2003-11-10 12:34
そうなんですよねぇ。
私もSEに大文字小文字の区別が必要か確認したんですが、システム的に必要なんだそうです。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-11-10 14:17
ほむらです。
ちなみに、ASCIIコードでは
 '0' 48(0x30)
 'A' 65(0x41)
 'a' 97(0x61)
になっています。(VBでは16進数表記は&H??かな?)
参考までにということで^^;;;;;
ちなみに、FROM TO を正しくしたい場合には区別無しで判断した後に
変換なし(区別有り)状態で判断の組み合わせで出来ますね

#で?回避策とった結果としてどいう並びにしたいのですか?
#大文字/小文字の区別をつける時の優先度を決定する規則は?


[ メッセージ編集済み 編集者: ほむら 編集日時 2003-11-10 14:22 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-11 12:14
 VB.NETで大文字小文字の区別をしないようにするには、ソリューションエクスプローラでプロジェクトのプロパティを表示し、「共通プロパティ→ビルド」の、Option CompareをTextにします。

#ついでにoption strictはonにすることをお勧め

 C#や、VB.NETでも、場合によって使い分けたい場合はこちら
引用:

カルチャを認識しない文字列比較の実行より:

この操作でカルチャを認識しないようにするには、culture パラメータとして CultureInfo.InvariantCulture を指定する必要があります。このコード例を次に示します。

[Visual Basic]
Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
[C#]
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);



[ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-11 12:17 ]
あさけん
会議室デビュー日: 2003/06/30
投稿数: 6
投稿日時: 2003-11-11 13:29
詳細な情報ありがとうございます。
参考にさせていただきます。
1

スキルアップ/キャリアアップ(JOB@IT)