Ich muss via SQL nach einem % suchen

JohnDoe

Erfahrenes Mitglied
Hallo, alle zusammen,

ich hab einen Auftrag, eine Datenbank via ASP abzufragen und darzustellen. In dieser Datenank (Tabelle) existiert ein Feld "Text".
Darin sind verschiedene Aussagen festgehalten.
Unter anderem auch Prozentangaben.
Mein Problem. Diese Text-Feld muss ich mit Like abfragen, damit man auch nur Teile des Textes eingeben muss. Der SQL sieht also wie folgt aus:

SELECT RN,KN,BN,WN,DA,Status,Wert1,Text,Typ FROM Daten WHERE Text like '%12%'

Das Problem ist, dass es auch dann funktionieren soll, wenn man in dem Textfeld, wo gerade die 12 eingegeben wurde, ein %-Zeichen verwenden soll.
Die SQL:

SELECT RN,KN,BN,WN,DA,Status,Wert1,Text,Typ FROM Daten WHERE Text like '%%%'

Dann wird aber alles ausgegeben, da das %-Zeichen ja für alle Buchstaben steht.

Wie kann ich das machen?
Hilfe...
 
hey...

was für ne db benutzt du? mit oracle kannst du dein WHERE statement anders machen:
Code:
WHERE instr(Text,'%') > 0

weiss nicht, ob es den befehl auf anderen db's gibt..

greetings para
 
Bei Access ist der Platzhalter meines Wissens nach ein Sternchen, nicht das Prozentzeichen. Versuch das mal so:
Code:
SELECT RN,KN,BN,WN,DA,Status,Wert1,Text,Typ FROM Daten WHERE Text like '*%*'

Zumindest geht das so direkt aus Access heraus, kann sein, dass das Probleme gibt, wenn man von aussen auf die Datenbank zugreifen will.
 
Nein, geht nicht. Dann zeigt der gar nichts an...
Also denke ich, er sucht dann denString "*12*".

In meinem ASP-Buch steht das auchso drin. Steht aber leider nichts dazu drin, wie man ein % suchen kann.

Vielleicht mit dem ASCII-Zeichen? Wie lautet das denn und wie kann ich das in eine SQL einfügen?
 
Naja, wenn ich die Abfrage direkt in der Access-Umgebung laufen lasse, funktioniert das. Aber Access ist sowieso komisch...

Versuch mal den Backslash als Escapezeichen:
Code:
SELECT ... WHERE ... LIKE '%\%%'
 
oder versuch das mal...
Code:
WHERE inStr(1,Text,'%') > 0

das sollte nun wirklich klappen ;)

es sollte auch wesentlich schneller sein als eine LIKE-Abfrage!!!

greetings para
 
Sorry, ob das funzt, weiß ich nicht, aber ich habs rausgefunden:

man muss das Zeichen nur in []-Klammern setzen, also [%].

Jetzt muss ich nur noch einen in einem Textfeld eingegebenen String, wie "56 %" irgendwie in "56 [%]" verwandeln.
Kennt jemand die Anweißung, um nach Strings in einem String zu suchen um diese dann zu ersetzen?
 
Original geschrieben von JohnDoe
man muss das Zeichen nur in []-Klammern setzen, also [%].

ich würde trotzdem auf LIKE verzichten.. vor allem, wenn du grosse datenmengen hast, ist die inStr-Funktion schneller!

einen string ersetzt du so:
Code:
SELECT REPLACE(Text,'searchString','replaceString') FROM ....

greetings para
 
Bist Du überhaupt sicher, dass es bei Access schon eine InStr-Funktion für SQL gibt? Bei mir funktioniert das nämlich auch nicht...

Und ausserdem kann ich mir ehrlich gesagt nicht vorstellen, dass InStr schneller als LIKE sein soll. Access ist so oder so schon langsam und instabil, das liegt nicht unbedingt an grossen Datenmengen. ;)
 
Zurück