Ich hab mir mal die Doku angeschaut zu dem Thema:
dev.mysql.com/doc/re...string-literals.html
Ich hoffe, es wenigstens teilweise erklären zu können.
Ich gehe mal von dem "%\\% aus:
Hier steht
Zitat: |
The “\%” and “\_” sequences are used to search for literal instances of “%” and “_” in pattern-matching contexts where they would otherwise be interpreted as wildcard characters. |
Das hieße, durch das 2. Backslash wird dafür gesorgt, dass das 2. % nicht mehr als Wildcard, sondern als Literal benutzt wird. Zur besseren Lesbarkeit stelle ich ab hier das letzte %-Literal mal als § dar und das %-Wildcard als %. Damit wäre meinem Verständnis nach das 2. Bashslash "verbraucht". Nun haben wir also noch "%\§". Weiter vorne steht:
Zitat: |
MySQL recognizes the escape sequences shown in Table 9.1, “Special Character Escape Sequences”. For all other escape sequences, backslash is ignored. |
Da das § (%-Literal) nicht in Tabelle 9.1 als Special Escape Sequence aufgeführt ist, komme ich zu dem Schluss, dass hier das \ ignoriert wird. Somit wird aus "%\§" -> "%§" Somit sucht "%\\%" nur nach Strings, die mit dem Prozentzeichen enden (das erste % ist weiterhin als Wildcard zu sehen).
Meine Vermutung bedingt, dass MySql den String von hinten nach vorn durchsucht...
Die Sache mit den 3 und 4 Backslashes sind mir aber noch zu hoch...