0 Daumen
92 Aufrufe

Hallo,

folgenden SQL-Code habe ich gegeben:

SELECT Straße, Hausnummer
from tbAdressen
Where Straße Like ("D*d?")

Ich verstehe die letzte Klammer nach dem Like nicht ganz, auf jeden Fall sollen mMn. alle Straßen und Hausnummern derjenigen aus der Tabelle Adressen angezeigt werden, deren Straßen mit D beginnen und...................-.......entweder ein kleines d beinhalten oder auf d enden. ?!?

Kann mir das jemand kurz erklären?

Gefragt von

2 Antworten

+1 Punkt
Where Straße Like ("D*d?")

Sicher, dass hier kein Punkt (.) vor dem Stern sein soll? 

Der angegebene Regex würde bedeuten: Beliebig viele \(D\)s und maximal ein \(d\) nach einer beliebig langen Kette von \(D\)s. "D*d?" beschreibt die Wörter der folgenden Sprache:

\(L:=\left\{D^md\mid m\in\mathbb{N}_0\right\}\cup\left\{D^m\mid m\in\mathbb{N}_0\right\}\)

Da das leere Wort \(\epsilon\) ebenfalls eine Option ist, zweifle ich an der Korrektheit der Aufgabenstellung!

Beantwortet von 7,8 k
0 Daumen

Hallo, ich finde hier http://www.postgresql.org/docs/current/static/functions-matching.html unter 9.7.2. Folgendes:


  • * denotes repetition of the previous item zero or more times.

  • + denotes repetition of the previous item one or more times.

  • ? denotes repetition of the previous item zero or one time.

    Das würde nun heissen, dass der Name der Strasse aus beliebig vielen (auch 0) D gefolgt von mindestens keinem oder einem d besteht.

    Allerdings kann ich in der Dokumentation nicht wirklich erkennen, dass bei Stringmatching " " zu verwenden wäre. 

    Achtung: Tabelle 9-14 im gleichen Link sagt etwas Anderes. 

Beantwortet von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...