На моем 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 \" в поиске?
Вы должны удвоить \in =
Вы должны вчетверо
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 %';
LIKE 'A%
может использовать индекс, ноLIKE '%A'
не может.