Crash-Kurs SQL

<< Klicken um das Inhaltsverzeichnis anzuzeigen >>

Navigation:  Karten-Explorer > Suchen & Identifizieren > Geo-Objekte suchen >

Crash-Kurs SQL

Previous pageReturn to chapter overviewNext page

Crash-Kurs SQL-Abfrage

 

Eine SQL-Bedingung zur Selektion von Geo-Objekten ist grundsätzlich folgendermaßen aufgebaut:

Feldname Operator Wert wie z.B. Rind > 0 für ein numerisches Feld oder Name like 'Meier%' für ein Zeichenkettenfeld.

Operatoren

Vergleichsoperatoren

<

kleiner

=

gleich

>

größer

<=

kleiner (oder) gleich

<>

ungleich

>=

größer (oder) gleich

logische  Verknüpfungen verweislogische Verknüpfungen

and

verknüpft Teilbedingungen mit einem logischen UND, so dass jede Teilbedingung erfüllt sein muss

or

verknüpft Teilbedingungen mit einem logischen ODER, so dass mindestens eine Teilbedingung erfüllt sein muss

Spezialoperatoren

like

Dieser Operator ist nur für Zeichenketten definiert und vergleicht auf "Teilzeichenketten" in einem Zeichenfeld (verweisZeichenfelder).

Numerische Felder

Numerische Felder enthalten ausschließlich Zahlen (ggf. Komma und Vorzeichen). Vergleiche folgen den Regeln der Mathematik, d. h., es werden immer alle Ziffern als Gesamtheit entsprechend ihres Zahlenwertes betrachtet und in Relation zu anderen Zahlen gesetzt wie 1.3 < 5 < 199 usw.

Beispiele:

Rind > 0 findet alle Einträge mit Rindern!

Rind <> 0 findet alle Einträge mit Rindern!

Schwein > 100 findet alle Einträge mit mehr als 100 Schweinen!

Schwein >= 100 findet alle Einträge mit 100 oder mehr Schweinen!

Zeichenfelder

Werte sind in einfache Hochkommata einzuschließen, wie z.B. Name = 'Meier'

 

Groß-/Kleinschreibung ist signifikant!

 

Zeichenfelder können Buchstaben, Ziffern und Sonderzeichen enthalten. Die Vergleichsoperationen können angewendet werden, arbeiten jedoch nicht wie bei numerischen Feldern. Bei Zeichenketten werden Zeichen von links beginnend stellenweise verglichen. Ausschlaggebend dabei ist der Wert des Zeichens in der Zeichentabelle (so genannte ASCII-Tabelle).

 

Es gilt:

'A' < 'B', weil 'A' in der ASCII-Tabelle vor dem 'B' steht!

'1' < 'C', weil Ziffern in der ASCII-Tabelle vor Buchstaben stehen!

'139' < '9', weil stellenweise verglichen wird und '1' < '9' ist!

 

Beispiele:

Name > 'D' findet alle Einträge die mit 'E', 'F' .. 'Z' beginnen!

Name < 'D' findet alle Einträge die mit '', 'A', 'B', 'C' beginnen!

 

Der like-Operator und das %-Zeichen erlauben das effiziente Vergleichen (Suchen) mit Teilzeichenketten, wobei mit dem %-Zeichen vor und/oder nach dem eigentlichen Suchwert eine Art Suchmaske gebildet wird.

 

Beispiele:

Name like 'Meier' - Name muss exakt Meier sein!

Name like 'Meier%' - Name muss mit Meier beginnen!

Name like '%Meier%' - Name muss (irgendwo) Meier enthalten!

 

Krs_Schl like '12%'

Kreisschlüssel muss mit 12 beginnen! In einer Shape-Datei mit allen Kreisen Deutschlands würde man so alle Kreise Brandenburgs als Ergebnis der Abfrage erhalten!

logische Felder

Logische Felder können genau 2 Werte annehmen true (wahr bzw. ja) oder false (falsch bzw. nein). Für die Abfrage dieser Felder ist lediglich der =-Operator relevant.

Beispiele:

Untersucht = true - findet alle Einträge, für die untersucht wurde (resp. untersucht wahr ist)

Untersucht = false - findet alle Einträge, für die nicht untersucht wurde (resp. untersucht falsch ist)

Datumsfelder

Datumsfelder verhalten sich bei Vergleichen wie numerische Felder. Gewöhnungsbedürftig ist lediglich die Notation, die für Datumswerte erforderlich ist. Hier ist das Datum in der Form MM/TT/JJJJ anzugeben. So wird aus dem 31.12.2001 der Wert 12/31/2001.

Beispiele:

Datum >= 03/01/2000 - findet alle Einträge, für die das Datum größer/gleich 01.03.2000 ist

Datum <> 12/31/2000 - findet alle Einträge, für die das Datum nicht 31.12.2000 ist

logische Verknüpfungen

Es können mehrere (Teil-)Bedingungen mit einem logischen ODER bzw. mit einem logischen UND verknüpft werden.

Feldname1 Operator1 Wert1 or Feldname2 Operator2 Wert2

Feldname1 Operator1 Wert1 and Feldname2 Operator2 Wert2

Beispiel

Wirkung

Rind > 0 and Schwein > 0

Alle Tierhalter, die sowohl Rinder als auch Schweine besitzen, werden verarbeitet.

Rind > 0 or Schwein > 0

Alle Tierhalter, die entweder Rinder oder Schweine (oder beides) besitzen, werden verarbeitet.

Rind > 0 and Schwein = 0

Alle Tierhalter, die Rinder und keine Schweine besitzen, werden verarbeitet.

Datum >= 01/01/2000 and Datum <= 12/31/2000

Alle Einträge vom 01.01.2000 bis 31.12.2000 werden verarbeitet.