2015-09-30 4 views
0

У меня большая таблица в моей mysql db. В этой таблице один столбец содержит метаданные всего содержимого, которое у меня есть. значение довольно длинное, и мне нужно извлечь продолжительность всего видео. это выдержка из поля:регулярное выражение синтаксического анализа в mysql

{"progress":100,"id":"10","duration":4285,"audio":[],"status":"published" ..... 

мне нужно заботиться о стоимости после «длительности»:

Значение может начать 1 и быть до 10000.

Как я могу сделать?

ответ

1

Try с чем-то вроде этого:

SELECT SUBSTRING(
substr, 
LOCATE(':', substr) + 1, 
LOCATE(',', substr) - LOCATE(':', substr) -1) as duration FROM 
(SELECT SUBSTRING(column, LOCATE('"duration":', column)) substr 
FROM log_debug WHERE column REGEXP '\"duration\":') as foo; 

Внутренний выбор получает подстроку, которая начинается с «продолжительности» и охватывает до конца всей строки для всех строк, которые имеют поле длительности (добавить больше условия в том, где вы хотите).

Внешний выбор затем получает подстроку начиная после первого «:» и заканчивая до «»

+0

Hi Mamuso, спасибо за Ваш ответ. Попытка запустить его (я должен добавить другое предложение where из-за огромного количества строк) ничего не возвращает. то, как только вы получили значение, можно ли его суммировать? большое спасибо – Nick

+0

Пожалуйста, уточните свой вопрос с запросом, который вы делаете, чтобы узнать, что может быть неправильным. Чтобы суммировать длительности, вам нужно сделать только SELECT SUM (SUBSTRING ...) как total_duration FROM ... – mamuso

+1

Привет, я сделал это и работал как шарм. Большое спасибо. – Nick

Смежные вопросы