ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
2747
2747
EMPFEHLEN
-
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...Die schlimmsten Lügen werden oft schweigend erzählt.
-
hey...
was für ne db benutzt du? mit oracle kannst du dein WHERE statement anders machen:
Code :1
WHERE instr(Text,'%') > 0
weiss nicht, ob es den befehl auf anderen db's gibt..
greetings paraDer Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!
-
Nein, wir nutzen leider M$ Access
Die schlimmsten Lügen werden oft schweigend erzählt.
-
22.01.03 11:31 #4
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Bei Access ist der Platzhalter meines Wissens nach ein Sternchen, nicht das Prozentzeichen. Versuch das mal so:
Code :1
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?Die schlimmsten Lügen werden oft schweigend erzählt.
-
22.01.03 12:14 #6
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
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 :1
SELECT ... WHERE ... LIKE '%\%%'
-
oder versuch das mal...
Code :1
WHERE inStr(1,Text,'%') > 0
das sollte nun wirklich klappen
es sollte auch wesentlich schneller sein als eine LIKE-Abfrage******
greetings paraDer Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!
-
Sorry, ob das ****t, 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?Die schlimmsten Lügen werden oft schweigend erzählt.
-
ich würde trotzdem auf LIKE verzichten.. vor allem, wenn du grosse datenmengen hast, ist die inStr-Funktion schneller!Original geschrieben von JohnDoe
man muss das Zeichen nur in []-Klammern setzen, also [%].
einen string ersetzt du so:
Code :1
SELECT REPLACE(Text,'searchString','replaceString') FROM ....
greetings paraDer Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!
-
23.01.03 09:16 #10
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
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.
-
jup... wichtig ist einfach, dass du nach der klammer zuerst eine "1" hinschreibst.. also nicht wie üblich "string", "searchString"...Original geschrieben von Lirion
Bist Du überhaupt sicher, dass es bei Access schon eine InStr-Funktion für SQL gibt? Bei mir funktioniert das nämlich auch nicht...
möglich, dass es erst ab Access 2000 funktioniert..
bei access hast du wohl schon recht.. aber wenn du mal mit ner oracle db arbeitest, wirst du den unterschied zwischen inStr und LIKE bemerken! naja, hauptsache, man findet den string
greetings paraDer Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!
-
23.01.03 10:36 #12
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hab ich gemacht und Access 2000 hab ich auch, aber es funktioniert trotzdem nicht. Entweder mach ich irgendwas falsch oder Access ist mal wieder zu eigensinnig...wichtig ist einfach, dass du nach der klammer zuerst eine "1" hinschreibst.. also nicht wie üblich "string", "searchString"...
möglich, dass es erst ab Access 2000 funktioniert..
Auf jeden Fall krieg ich da immer die Meldung, dass der Ausdruck syntaktisch falsch wäre.
Mit Oracle hab ich noch nicht so viel zu tun gehabt, aber ehrlich gesagt mag ich Oracle auch nicht besonders. Das ist erstens sauteuer, zweitens zu unübersichtlich (meiner Meinung nach) und drittens haben die in letzter Zeit etwas nachgelassen...
-
24.05.05 13:54 #13
- Registriert seit
- Aug 2004
- Beiträge
- 2
Hi,
hatte gerade das gleiche Problem nur mit *
habe durch rumfrimeln folgende Lösung gefunden:
WHERE (((tbl_Test1.Spalte1) Like '[*]*'))
bei dir müsste das so funktionieren:
SELECT RN,KN,BN,WN,DA,Status,Wert1,Text,Typ FROM Daten WHERE Text like '*[%]*'
Gruß Timo
Ähnliche Themen
-
Nach einem Wort suchen
Von kayut im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 11.05.10, 19:41 -
nach wörter in einem textfile suchen
Von gazale_m im Forum JavaAntworten: 14Letzter Beitrag: 21.11.08, 09:38 -
Nach einem Wert in Tabelle suchen
Von -GS-Master im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 12.04.07, 17:18 -
Nach einem bestimmten Eintrag in DB suchen
Von Eistee im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 20.05.05, 13:59 -
Nach einem Pc im Netzwerk suchen
Von MasterSHYBBY im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 28.01.04, 15:57





Zitieren
Login





