LEN ()% в MySQL Query - PullRequest
       39

LEN ()% в MySQL Query

2 голосов
/ 27 сентября 2019

Пример данных:

Образец № 1

<br/>Out at Jan 01, 2019, 5:27 pm <small>by Shyam</small>
<br/>In at Jan 02, 2019, 2:06 pm <small>by Ram</small>

Образец № 2

<br/>Out at Jan 01, 2019, 01:22 pm <small>by Ram</small>
<br/>In at Jan 02, 2019, 2:22 pm <small>by Shyam</small>

Мне нужнозапрос на возврат только Sample # 2 , поскольку я ищу данные по Ram в Jan 01, 2019.

У меня есть этот запрос:

SELECT * FROM `tbl` WHERE `log` LIKE '%Jan 01, 2019 % Ram %';

Этот запрос возвращает Sample # 1 и Sample # 2 , так как длина % после date не определена.

Мне нужно вычислить-способ дать % длину символа

Как:

SELECT * FROM `tbl` WHERE `log` LIKE '%Jan 01, 2019 LEN(%)=3 Ram %';

Я пытался получить обязательные поля с другими запросами, но все не удалось.Есть ли в любом случае считать длину строки %?

Ответы [ 3 ]

3 голосов
/ 27 сентября 2019

Используйте регулярное выражение.Примерно так:

SELECT *
FROM `tbl`
WHERE `log` REGEXP 'Jan 01, 2019 .{3} Ram ';

. представляет любой символ.{3} говорит, что это может повторяться до трех раз.

Я не уверен, откуда взялась цифра "3".Кажется, там около 10 символов.Вы можете указать диапазон следующим образом:

SELECT *
FROM `tbl`
WHERE `log` REGEXP 'Jan 01, 2019 .{1,15} Ram ';
1 голос
/ 27 сентября 2019

Вы можете использовать _ подстановочный знак, обозначающий любые символы.Текст между датой и by Ram равен 5:27 pm <small>, поэтому вы можете использовать _______________ (ровно 15 символов), поэтому шаблон может быть:

SELECT * 
FROM `tbl`
WHERE `log` LIKE '%Jan 01, 2019 __________by Ram %'
OR `log` LIKE '%Jan 01, 2019 ___________by Ram %'; -- if the times is 12:12 for example

Поскольку это столбец журнала (я полагаю), он структурировани количество предполагаемых персонажей не изменится из-за некоторых опечаток и т. д.

0 голосов
/ 27 сентября 2019

Вы можете использовать подчеркивание в качестве заполнителя для одного символа.Повторите их, чтобы соответствовать нескольким персонажам.Или просто используйте HTML:

SELECT * FROM `tbl` WHERE `log` LIKE '%Jan 01, 2019 <small>by Ram</small>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...