Есть вот такая таблица с данными:
CREATE TABLE IF NOT EXISTS `drv_guid_list` (
`id_guid` mediumint(6) unsigned NOT NULL AUTO_INCREMENT,
`id_ven` smallint(6) unsigned NOT NULL DEFAULT '0',
`id_dev` smallint(6) unsigned NOT NULL DEFAULT '0',
`drv_guid` char(255) DEFAULT NULL,
PRIMARY KEY (`id_guid`),
KEY `drv_guid` (`drv_guid`),
KEY `id_ven` (`id_ven`,`id_dev`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=85295 ;
--
-- Дамп данных таблицы `drv_guid_list`
--
INSERT INTO `drv_guid_list` (`id_guid`, `id_ven`, `id_dev`, `drv_guid`) VALUES
(1748, 0, 0, 'hdaudio\\func_01&ven_1002&dev_791a'),
(1768, 0, 0, 'hdaudio\\func_01&ven_1002&dev_791a&subsys_00791a00&rev_1000'),
(85291, 0, 0, 'hdaudio\\func_01&ven_1002&dev_791a&rev_1000');
Делаю такую выборку:
mysql> SELECT * FROM `drv_guid_list` WHERE `drv_guid` LIKE '%hdaudio\\func\_01&ven\_1002&dev\_791a%';
Empty set (0.08 sec)
ничего не находит..
А вот такая выборка даёт ожидаемый рузльтат:
mysql> SELECT * FROM `drv_guid_list` WHERE `drv_guid` LIKE '%hdaudio\\\\func\_01&ven\_1002&dev\_791a%';
+---------+--------+--------+------------------------------------------------------------+
| id_guid | id_ven | id_dev | drv_guid |
+---------+--------+--------+------------------------------------------------------------+
| 1748 | 0 | 0 | hdaudio\func_01&ven_1002&dev_791a |
| 1768 | 0 | 0 | hdaudio\func_01&ven_1002&dev_791a&subsys_00791a00&rev_1000 |
| 85291 | 0 | 0 | hdaudio\func_01&ven_1002&dev_791a&rev_1000 |
+---------+--------+--------+------------------------------------------------------------+
3 rows in set (0.08 sec)
Вопрос в том, почему символ \ должен экранироваться четырьмя символами \ а не одним?