datatable select の書き方について

解決


marllbolo  2012-05-28 13:28:27  No: 143314  IP: 192.*.*.*

VB2010を使っております。

dim dt as  New DataTable
dt.Select("ColumNum<='10' AND 計算オッズ>='30')

のように10〜30以外のものと取り出すことはできないのでしょうか。

dt.Select("ColumNum>='10' AND 計算オッズ<='30')

はできるのに不思議です。

おそらく、このケースはかなり使用頻度が高いと思うのですが、皆さんはどのように書いていらっしゃるのでしょうか。
宜しくお願いします。

編集 削除
ブババ  2012-05-28 15:10:34  No: 143315  IP: 192.*.*.*

突っ込みどころが満載なのですが、

> dt.Select("ColumNum<='10' AND 計算オッズ>='30')

は、以下のように二重引用符で閉じるということでいいんですよね?

dt.Select("ColumNum<='10' AND 計算オッズ>='30'")

また、[ColumNum]と[計算オッズ]はデータテーブルdtに含まれるカラム名という理解でいいですか?
それであれば、

dt.Select("ColumNum>='10' AND 計算オッズ<='30'")

がOKならば

dt.Select("ColumNum<='10' AND 計算オッズ>='30')

もOKのはずです。

あと、[ColumNum]と[計算オッズ]の型は何ですか?数値型であるならば
数字を引用符で囲む必要はないはずです。

それと、文面から推測して、本当は、計算オッズが10以下または30以上を抽出したいのではないですか?
そうであるならば、ソースは正しく書きましょう。
また、子の場合は、

dt.Select("計算オッズ<=10 OR 計算オッズ>=30")

とすればいいのではないですか?

#ヒント:ド・モルガンの定理

編集 削除
marllbolo  2012-05-28 16:26:21  No: 143316  IP: 192.*.*.*

ブババ様

お返事ありがとうございます。

>突っ込みどころが満載なのですが、

おっしゃるとおりです。^^;

>dt.Select("計算オッズ<=10 OR 計算オッズ>=30")

で目的が達せられました。ただ、

dt.Select("計算オッズ<=10 AND 計算オッズ>=30")

でいくとどれもデータを取得できませんでした。

モルガンの勉強してみます。ココの部分を曖昧にしてこれまで来たのでこういうところでつまずいてしまうんですね。

ありがとうございました。

編集 削除
ブババ  2012-05-28 16:54:36  No: 143317  IP: 192.*.*.*

一応解決したようでなによりですが、

> dt.Select("計算オッズ<=10 AND 計算オッズ>=30")

とは、計算オッズが10以下で、かつ30以上のものという条件になります。
そんな数はないですよねw

先ほどド・モルガンの定理の話をしましたが、これは、条件式

> 計算オッズ<=10 OR 計算オッズ>=30
> 計算オッズ>10 AND 計算オッズ<30  (あえて=は除いてある)

のお互いの関係を理解するために持ち出したものです。
(上の2つの条件式は、それぞれNotの関係であることが理解できるでしょうか。)

また、これに関連して、「ベン図」というキーワードもググってみてください。

編集 削除