Andreas-Lindig: escapen von Sonderzeichen bei mySql-Suche

hallo Forum,
Ich habe ein Problem mit der Such nach ''

ich habe folgende Abfrage:

SELECT *
FROM meine_tabelle
WHERE meine_spalte LIKE '%\%'

da bekomme ich weder eine Fehlermeldung, noch ein Ergebnis: ich meine, ich habe den Rückstrich doch escaped.
Wenn ich einmal mehr escape, werden alle Datensätze mit '' gefunden:

SELECT *
FROM meine_tabelle
WHERE meine_spalte LIKE '%\%'

meiner Meinung nach ist jetzt das letzte Prozentzeichen eigentlich auch schon escaped.
Auch bei dieser Variante bekomme ich alle Datensätze mit '':

SELECT *
FROM meine_tabelle
WHERE meine_spalte LIKE '%\%'
ESCAPE ''

und bei dieser auch:
SELECT *
FROM meine_tabelle
WHERE meine_spalte LIKE '%%%'
ESCAPE ''

Bei folgender Abfrage bekomme ich Datensätze mit diesen Werten in 'meine_spalte':
1. # ' * ~ \ \ "    <- beachte: Leerzeichen zwischen \ und \
2. \ä\o\

SELECT *
FROM meine_tabelle
WHERE meine_spalte LIKE '%\%'
ESCAPE ''

mit diser Where-Klausel
WHERE meine_spalte LIKE '%\\%'
das gleiche Ergebnis

mit
WHERE meine_spalte LIKE '%\\%'
aber nur: \ä\o\

wenn ich
ESCAPE ''
hinten anhänge, bekomme ich eine Fehlermeldung

also ich für meinen Teil verstehe nur Bahnhof, versteht jemand mehr davon?
gruß und vielen Dank für Hilfe, Andreas

Gruß, Andreas
--
http://extra.andeas-lindig.de/was_das/

  1. hallo Forum,
    Ich habe ein Problem mit der Such nach ''

    ich habe folgende Abfrage:

    SELECT *
    FROM meine_tabelle
    WHERE meine_spalte LIKE '%\%'

    da bekomme ich weder eine Fehlermeldung, noch ein Ergebnis: ich meine, ich habe den Rückstrich doch escaped.
    Wenn ich einmal mehr escape, werden alle Datensätze mit '' gefunden:

    SELECT *
    FROM meine_tabelle
    WHERE meine_spalte LIKE '%\%'

    meiner Meinung nach ist jetzt das letzte Prozentzeichen eigentlich auch schon escaped.
    Auch bei dieser Variante bekomme ich alle Datensätze mit '':

    SELECT *
    FROM meine_tabelle
    WHERE meine_spalte LIKE '%\%'
    ESCAPE ''

    und bei dieser auch:
    SELECT *
    FROM meine_tabelle
    WHERE meine_spalte LIKE '%%%'
    ESCAPE ''

    Bei folgender Abfrage bekomme ich Datensätze mit diesen Werten in 'meine_spalte':

    1. ' * ~ \ \ "    <- beachte: Leerzeichen zwischen \ und \

    2. \ä\o\

    SELECT *
    FROM meine_tabelle
    WHERE meine_spalte LIKE '%\%'
    ESCAPE ''

    mit diser Where-Klausel
    WHERE meine_spalte LIKE '%\\%'
    das gleiche Ergebnis

    mit
    WHERE meine_spalte LIKE '%\\%'
    aber nur: \ä\o\

    wenn ich
    ESCAPE ''
    hinten anhänge, bekomme ich eine Fehlermeldung

    also ich für meinen Teil verstehe nur Bahnhof, versteht jemand mehr davon?

    http://www.mysql.de/doc/de/String_comparison_functions.html

    1. hallo Linksetzer:

      http://www.mysql.de/doc/de/String_comparison_functions.html

      du bist cool.
      nur ich hab nicht ganz verstanden, warum das \ einmal geparst und einmal bei der Suche entfernt wird und das nur, wenn man nach \ selbst sucht.

      vielen Dank, Andreas