2009-08-22 16 views
2

Komplette sql noob hier.sql "Bereiche" und Platzhalter

Der Versuch, über einen Weg zu denken, einige Daten in einer Tabelle zu speichern, die ein wenig wie folgt aussieht:

"0-15", "niedrig", "1-3"

" 45-50" , "med", "*"

"*", "*", "1000"

wo Spalte 1 & 3 im Bereich der ganzen Zahlen sind, und Spalte 2 ist ein Aufzählungstyp (Könnte als gespeichert werden was auch immer wirklich).

Ich möchte Platzhalter in den Tisch zu legen, um der Lage sein, die Anzahl der Zeilen zu halten, während immer noch nichts „fehlt“.

von was ich verstehe, Spalte 1 & 3 würde am besten als zwei Spalten von ganzen Zahlen jeweils mit -INT_MAX bis INT_MAX oder was auch immer als "Wildcard" gespeichert werden. (Wählen bla bla von wo col1.1> val und col1.2 < val)

ist dies eine vernünftige Strategie?

Spalte 2 scheint schwieriger, wählen bla bla von wo col2 = 'med' oder col2 = '*' Recht nicht zu sein scheinen. Ich könnte wahrscheinlich tun diese numerisch wie 1 & 3, aber lieber nicht

jemand dafür interessieren, mich zu erleuchten?

Antwort

3

Meine Präferenz wäre NULL als Platzhalter zu verwenden, da es für jeden Menschen, der die Datenbank studiert, hervorstechen wird. In diesem Fall wird jedes Element Ihrer WHERE Klauseln wie folgt aussehen:

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) 

Dies ist die gleiche Grundidee der * Sie vor hatte, aber einen Wert mit, dass SQL erkennt als der gewöhnlichen Werte unterschiedlich sind.

+0

Ja, was du gesagt hast. – chaos

+0

ok, ich wollte nur irgendwie Bestätigung meines Verdachts :) Dank –

1

Eine natürliche Sache zu tun, gegeben SQL, wäre NULL als Ihr Platzhalterwert zu verwenden.