Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche SQL Operator (https://www.delphipraxis.net/108316-suche-sql-operator.html)

delphis spassbremse 11. Feb 2008 16:27

Datenbank: Access • Zugriff über: ADO

Suche SQL Operator
 
[Lösung, siehe Seite 2]

Hallo,

ich bin mit meinem Wissen am Ende
und bräuchte mal einen kleinen Denkanstoß.

Ich arbeite mit M$ Access und suche einen LIKE ähnlichen Operator.

Das ganze soll so aussehen:

Der Suchstring: EFGHIJKLMNOP

Beispiele der Datenbank (Rot: Diese Einträge werden getroffen, Grün: werden übergangen)
ID - TEXT
1# - HIJKL
2# - OPQRS
3# - EFGHIJKLM
4# - IJ
5# - PQRST

ich hoffe diese Darstellung mach mein Problem etwas verständlicher...

Grüße,

Björn

DeddyH 11. Feb 2008 16:33

Re: Suche SQL Operator
 
Ich habe kein Access, aber evtl. so?
SQL-Code:
SELECT * FROM Tabelle WHERE POSITION(Feld IN 'EFGHIJKLMNOP') > 0

delphis spassbremse 11. Feb 2008 17:16

Re: Suche SQL Operator
 
Ich hab dein Vorschlag ausprobiert und das ganze noch verschieden abgewandelt, doch ich komm zu keiner Lösung

grenzgaenger 11. Feb 2008 17:49

Re: Suche SQL Operator
 
was soll der operator denn leisten? aus deinem post komm ich nicht draus... :gruebel: :gruebel:

DeddyH 11. Feb 2008 17:53

Re: Suche SQL Operator
 
Ich habe das so verstanden, dass er alle Datensätze ermitteln will, in denen das Feld Text ein Teilstring des Suchstrings ist.

grenzgaenger 11. Feb 2008 17:58

Re: Suche SQL Operator
 
tja, was ist ein teilstring? 1 buchstabe, 2, oder doch mehr? müssen sie am anfang gleich beginen, am schluss gleich aufhören, dürfen dazwischen andere (wie viele) zeichen vorkommen?

bei seinem post bin ich da nicht durchgestiegen, von daher denk ich auch, dass eine funktion so schnell auch nicht durchsteigt, ohne dass man ihr mehr zur aufgabenstellung sagt...

denke es wär ganz gut, wenn delphis spassbremse etwas mehr zur funktionalität sagen könnte die er gern hätte..

delphis spassbremse 11. Feb 2008 18:15

Re: Suche SQL Operator
 
Also,

es sollen die Einträge selektiert werden, die den Suchstring im Feld "benutzername" enthalten,
egal wo er steht und wie lang er ist...

Beispiel:
- Wenn man nach "Administrator" sucht, dann soll auch der Benutzername "Admin" als Ergebnis ausgegeben werden.
- Wenn man nach "Klaus-Dieter91" sucht, dann soll auch der Benutzername "Dieter" als Ergebnis ausgegeben werden.

vielleicht sollte das verständlicher sein ;)

Grüße,

Björn

Dax 11. Feb 2008 18:17

Re: Suche SQL Operator
 
Dann dreh die zwei Parameter von Position doch einfach um? :gruebel:

mkinzler 11. Feb 2008 18:17

Re: Suche SQL Operator
 
das wird so einfach nicht gehen. da SQL nur unterstützt nach Werten zu suchen, die den suchbegriff enthalten und nicht umgekehrt. Der einzige Weg dürtfe ein Konstrukt ähnlich wie Deddys sein.

grenzgaenger 11. Feb 2008 18:17

Re: Suche SQL Operator
 
also ein simpler substring vergleich, welcher die gross und kleinschreibung unterscheidet?

und der komplett im suchstring enthalten sein muss...

DeddyH 11. Feb 2008 18:20

Re: Suche SQL Operator
 
Dann konsultiere doch mal die Access-SQL-Hilfe nach Stringfunktionen. Da ist vielleicht etwas ähnliches wie Position dabei.

delphis spassbremse 11. Feb 2008 18:36

Re: Suche SQL Operator
 
Da habe ich heute nachmittag schon gesucht und keine brauchbare funktion gefunden...
und position() kennt access nicht

grenzgaenger 11. Feb 2008 18:39

Re: Suche SQL Operator
 
unter den oben genannten voraussetzungen reicht doch like :-)

DeddyH 11. Feb 2008 18:41

Re: Suche SQL Operator
 
Wie soll das Like denn aussehen?

delphis spassbremse 11. Feb 2008 18:42

Re: Suche SQL Operator
 
Nein nicht wirklich...

ich hab mir zwar noch ein
SQL-Code:
SELECT * FROM users WHERE "Klaus-Dieter" LIKE "%"username"%"
aus den Fingern gesaugt, aber dabei tritt mir access in den Hintern und sacht Tschüss....

grenzgaenger 11. Feb 2008 18:43

Re: Suche SQL Operator
 
in etwa so ..
SQL-Code:
SELECT *
FROM tabelle
WHERE suchfeld LIKE '%Admin%'

DeddyH 11. Feb 2008 18:44

Re: Suche SQL Operator
 
Das ist ja genau verkehrt herum.

Die Muhkuh 11. Feb 2008 18:47

Re: Suche SQL Operator
 
Was für einen Sinn macht das eigentlich, wenn man nach Administrator sucht und es auch Admin findet? Dann würde er auch genau so gut mini, strato etc. pp. finden.

DeddyH 11. Feb 2008 18:50

Re: Suche SQL Operator
 
Nach dem Sinn frage ich nicht, mich interessiert eigentlich mehr die Aufgabe, aber ohne Access...

grenzgaenger 11. Feb 2008 18:52

Re: Suche SQL Operator
 
bei username, macht es keinen sinn. da muss man schliesslich wissen ob man das richtige gefunden hat. was ich mir vorstellen kann ist, dass man im namen nach einen freien text suchen möcht, um zu sehen ob ein bestimmte(r) user bereits vorhanden ist.

delphis spassbremse 11. Feb 2008 18:52

Re: Suche SQL Operator
 
Das ganze war jetzt natürlich nur ein Beispiel.
Was ich halt vorhabe, ist einen Intelligenten Chat-Bot zu schreiben, den ich für meinen HTTP Chat benutzen möchte,
den ich in Delphi geschrieben habe....

Da macht das ganze wieder Sinn... :wink:

Aber vllt. gibts für nen "Chat-Bot" eine Performantere Lösung als nach Benutzereingaben zu suchen.

Grüße,

Bjlrn


Wenn jetzt jemand sicher sagen kann, dass MySQL das drauf hat, dann würde ich das ding auf MySQL umbauen.
Wär mir sogar lieber, weil dann kann man einfacher über nen PHP Script dem neue Texte hinzufügen...

RWarnecke 11. Feb 2008 19:56

Re: Suche SQL Operator
 
Bei MySQL kannst Du mit LIKE arbeiten.

delphis spassbremse 11. Feb 2008 19:59

Re: Suche SQL Operator
 
ja aber auch umgedreht?

ich werds am besten mal nachher ausprobieren

RWarnecke 11. Feb 2008 20:17

Re: Suche SQL Operator
 
Zitat:

Zitat von delphis spassbremse
ja aber auch umgedreht?

ich werds am besten mal nachher ausprobieren

Wie umgedreht ? Du kannst in Delphi mit einer Query und SQL auf eine MySQL-Datenbank zugreifen und auch mit einem PHP Script. In beiden Varianten kannst Du LIKE einsetzen.

delphis spassbremse 11. Feb 2008 21:35

Re: Suche SQL Operator
 
Das meine ich nicht,

schau dir mal die ersten Posts an...


Grüße,
Björn

omata 11. Feb 2008 21:49

Re: Suche SQL Operator
 
Vielleicht so...

SQL-Code:
SELECT *
FROM tabelle
WHERE INSTR(dbfeld, 'EFGHIJKLMNOP') > 0 
   OR INSTR('EFGHIJKLMNOP', dbfeld) > 0
Gruss
Thorsten

delphis spassbremse 11. Feb 2008 21:53

Re: Suche SQL Operator
 
Dankeschön :P
Das funktioniert...

Grüße,

Björn


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz