Mysql, где предложение не выполняет поиск

На моем MySql Workbench я выполняю простой поисковый запрос:

SELECT * 
FROM test.table 
WHERE originalFilePath = 'C:\inetpub\wwwroot\documentScanning\output\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf';

SELECT * 
FROM test.table 
WHERE originalFilePath like '%C:\inetpub\wwwroot\documentScanning\output\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf%';

SELECT * 
FROM test.table 
WHERE originalFilePath like '% C:\inetpub\wwwroot\documentScanning\output\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf %';

Но каждый запрос всегда пуст. Дальнейшее тестирование показало, что запросу не нравится 'C: \ inetpub \ wwwroot \ documentScanning \ output \' по какой-то причине, что является странным, значение поиска является прямой копией и вставкой из самой таблицы. У меня есть этот запрос для работы:

SELECT * 
FROM test.table 
WHERE originalFilePath like '%\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf';

Однако этот запрос будет использоваться в сценарии, который запускается каждые 2 минуты, а база данных невероятно велика, поэтому я бы предпочел не использовать приведенный выше запрос, а использовать прямой поиск (равно), поскольку мне сказали, что использование поиска с подстановочными знаками может замедлить работу. Есть ли способ сделать это? Может кто-нибудь объяснить, почему ему не нравится 'C: \ inetpub \ wwwroot \ documentScanning \ output \' в поиске?

Проблема с использованием подстановочного поиска заключается в том, что вы не сможете использовать какие-либо индексы в поле, если у вас есть подстановочный знак в начале. LIKE 'A% может использовать индекс, а LIKE '%A' - нет.

Zack 13.09.2018 22:17
0
1
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно удвоить \ in =

Приходится в 4 раза увеличивать \ лайк

SELECT * 
FROM test.table 
WHERE originalFilePath = 'C:\\inetpub\\wwwroot\\documentScanning\\output\\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf';

SELECT * 
FROM test.table 
WHERE originalFilePath like '%C:\\\\inetpub\\\\wwwroot\\\\documentScanning\\\\output\\\\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf%';

SELECT * 
FROM test.table 
WHERE originalFilePath like '% C:\\\\inetpub\\\\wwwroot\\\\documentScanning\\\\output\\\\REQMAN/2018-09-06_10.03.53/TS18-6289.pdf %';

Другие вопросы по теме