PDA

Vollständige Version anzeigen : Sonderzeichen * abfragen


Johnny Loser
09.10.2011, 14:18
Hallo zusammen,

irgendwie stehe ich auf dem Schlauch, möglich, daß es auch garnicht funktioniert.

Ich habe eine Tabelle mit n Datensätzen. Ein Feld enthält Text, z.B.:

abcd-efgh-ijkl
abcd-efg*-mnop

Nun möchte ich die Datensätze abfragen, bei denen efg* im Text enthalten ist, also in etwa so:

SELECT Feld FROM Tabelle WHERE Feld LIKE '*efg**'

Das Problem ist nur, daß das so nicht funktioniert.
Es werden beide Datensätze ausgegeben.

Ich habe es momentan so gelöst:

SELECT Feld FROM Tabelle WHERE Replace(Feld, '*', 'Stern') LIKE '*efgStern*'

Nun gut, es verbessert die Treffergenauigkeit, aber wenn irgendwo ein Datensatz im Feld ebenfalls efgStern stehen hat, wird der mit ausgegeben.
Auch das könnte ich verbessern, indem ich eine Zeichenkette wähle, die wahrscheinlich niemals vorkommt. (Sag niemals "nie")

Aber dann gibt es noch zahlreiche andere Zeichen, die genauso im Text enthalten sein können und ebenfalls gezielt abgefragt werden müssen.

Vielleicht gibt es hierfür ja auch eine wesentlich einfachere Lösung.

hcscherzer
09.10.2011, 14:23
Dadurch, dass das '*' von der Funktion LIKE als Wildcard angesehen wird, ist das so wohl nicht lösbar. Es gäbe aber auch noch die Funktion InStr() in JetSQL bzw. CharIndex() in MSSQL ... die liefern die Position des gesuchten Strings im zu durchsuchenden oder 0, wenn der Suchstring nicht vorkommt.

Thomas Möller
09.10.2011, 14:25
Hallo Jonny,

Du musst das Sternchen, nach dem Du suchen willst, im Kriterium in eckige Klammern setzen:

Wie '*efg *'

HTH

Johnny Loser
09.10.2011, 15:28
Vielen Dank für die Antworten.

Ich habe mal der genial einfachen Methode von Thomas den Vorzug gegeben.
Die funktioniert einwandfrei, auch mit 'nem "?".

Ach ließen sich doch alle Probleme immer so schnell und einfach lösen...

Lanz Rudolf
09.10.2011, 15:32
Hallo
noch was das die aussage von Thomas bekräftigt sollte:
sihe auch am schluss der PDF-seite ;)

Johnny Loser
09.10.2011, 16:30
Hi Ruedi,

auch Dir besten Dank.

Hab' wieder einiges gelernt.

Lanz Rudolf
09.10.2011, 17:53
Hallo Johnny Loser,
schön Dich wieder eimal hier im Forum zu Sehen(Lesen) ;)

Johnny Loser
09.10.2011, 20:45
Jo Ruedi, finde es auch schön, soviele der "alten Hasen" hier immer noch anzutreffen. Und es sind ja auch noch ein paar neue und engagierte hinzugekommen.

Nach mehrmonatiger Programmier-Abstinenz schlage ich mich z.Z. mal wieder mit zwei Projekten rum, die auch noch ein par Monate andauern werden. Dank dem, was ich hier im Forum gelernt habe, komme ich in den meisten Fällen gut zurecht, doch ich denke schon, demnächst wieder öfter reinzuschauen.

Macht ja doch irgendwie Spaß, wenn man andern helfen kann...