tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
2747
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    JohnDoe JohnDoe ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Beiträge
    219
    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.

  2. #2
    Registriert seit
    Dec 2001
    Beiträge
    171
    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 para
     
    Der Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!

  3. #3
    JohnDoe JohnDoe ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Beiträge
    219
    Nein, wir nutzen leider M$ Access
     
    Die schlimmsten Lügen werden oft schweigend erzählt.

  4. #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.
     

  5. #5
    JohnDoe JohnDoe ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Beiträge
    219
    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.

  6. #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 '%\%%'
     

  7. #7
    Registriert seit
    Dec 2001
    Beiträge
    171
    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 para
     
    Der Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!

  8. #8
    JohnDoe JohnDoe ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Beiträge
    219
    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.

  9. #9
    Registriert seit
    Dec 2001
    Beiträge
    171
    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 :
    1
    
    SELECT REPLACE(Text,'searchString','replaceString') FROM ....

    greetings para
     
    Der Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!

  10. #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.
     

  11. #11
    Registriert seit
    Dec 2001
    Beiträge
    171
    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...
    jup... 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..

    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 para
     
    Der Verstand und die Fähigkeit, ihn zu gebrauchen, sind zwei verschiedene Gaben!

  12. #12
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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..
    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...
    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...
     

  13. #13
    centerguide centerguide ist offline Grünschnabel
    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

  1. Nach einem Wort suchen
    Von kayut im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 11.05.10, 19:41
  2. nach wörter in einem textfile suchen
    Von gazale_m im Forum Java
    Antworten: 14
    Letzter Beitrag: 21.11.08, 09:38
  3. Nach einem Wert in Tabelle suchen
    Von -GS-Master im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 12.04.07, 17:18
  4. Nach einem bestimmten Eintrag in DB suchen
    Von Eistee im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 20.05.05, 13:59
  5. Nach einem Pc im Netzwerk suchen
    Von MasterSHYBBY im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 28.01.04, 15:57