2009-08-22 9 views
2

ここにSQLのnoobを入力してください。sql "ranges"とワイルドカード

少しこのようになりますテーブル内のいくつかのデータを格納するための方法を考えるようにしよう:

「0-15」、「低」、「1-3」

」カラム1 & 3は整数の範囲であり、COL 2が列挙型である45-50" 、 "のmed"、 "*"

"*"、 "*"、 "1000"

(として保存することができます本当に何でも)。

テーブルにワイルドカードを入れて、まだ行方不明ではなく行数を減らしたいと思っています。

私はそれを理解しています。列1 & 3は、-INT_MAXからINT_MAXまで、または「ワイルドカード」として、2つの整数の列として保存するのが最適です。 (blaからblaを選択します(col1.1> valとcol1.2 < val)

これは合理的な戦略ですか?

第2列はblaからblaを選択します。ここでcol2 = 'med'またはcol2 = '*'は正しく見えません。私はおそらく1 &のように数値的にこれらを行うことができますが、むしろ

私を啓発する人は誰ですか?

答えて

3

私の好みは、データベースを勉強している人間にとって目立つように目立つように、ワイルドカードとしてNULLを使用することです。その場合は、あなたのWHERE節の各要素は、このようになります。

WHERE (77777 > min_value OR min_value IS NULL) 
    AND (77777 < max_value OR max_value IS NULL) 
    AND (col2 = 'med' OR col2 IS NULL) 

これはあなたが前に持っていたが、SQLは通常の値とは異なるものとして認識した値を使用して*の同じ基本的な考え方です。

+0

ええ、あなたが言ったこと。 – chaos

+0

ok、私はちょっとした疑惑の確認を求めていました:) thanks –

1

SQLでは、ワイルドカード値としてNULLを使用するのが自然です。

関連する問題