steckl: mySql: maskierung von backslash

Beitrag lesen

hallo,

bisher war ich immer der meinung, dass man einen \ (backslash) immer mit einem backslash davor maskieren muss. Aber in der where-Klausel mit like scheint das nicht so zu sein.
kann mir jemand folgendes Verhalten erklaeren:

mysql> desc tabOne;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     |      | PRI | NULL    | auto_increment |
| txt   | varchar(50) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
mysql> select id,txt from tabOne where txt like 'test\\\\\\eins';
+----+------------+
| id | txt        |
+----+------------+
|  4 | test\eins |
+----+------------+
mysql> select id,txt from tabOne where txt like 'test\\\\eins';
+----+------------+
| id | txt        |
+----+------------+
|  4 | test\eins |
+----+------------+
1 row in set (0.00 sec)

mysql> select id,txt from tabOne where txt like 'test\\\\eins';
+----+-----------+
| id | txt       |
+----+-----------+
|  2 | test\eins |
|  3 | test\eins |
+----+-----------+
mysql> select id,txt from tabOne where txt like 'test\\eins';
+----+----------+
| id | txt      |
+----+----------+
|  1 | testeins |
+----+----------+

wenn ich stattdessen "=" anstatt "like" schreibe verhaelt es sich ganz normal (mit backslash maskiert durch einfachen backslash):
mysql> select id,txt from tabOne where txt='test\eins';
+----+-----------+
| id | txt       |
+----+-----------+
|  2 | test\eins |
|  3 | test\eins |
+----+-----------+

koennte mir jemand sagen, wann ich wieviele backslashs zum maskieren brauche?

mfG,
steckl