Использование регулярных выражений в SQL

Я столкнулся с проблемой, когда я не могу больше идти самостоятельно. В настоящее время у меня есть база данных, которая в основном перечисляет мой мобильный телефон с различными приложениями на нем.

Приложения перечислены со статусом в том же столбце базы данных, что означает, что я отделяю приложение от статуса с помощью ";" и я разделяю различные приложения с помощью ",".

Пример:

ipboard,4.83->6.3,Running;testAcap,6.9-0,Stopped;
ipboard,2.3333->5.366,Stopped;Videostream,1.2,Stopped;

Теперь, как мне найти все ipboards, которые в настоящее время как приложение остановлены? Как видите, строка перед статусом может меняться по длине из-за разных версий. И я не хочу список всего, что остановлено, только ipboard в этом случае.

Мой дерьмовый запрос пока что выбирает все строки с ipboard в них (у всех их нет):

select *
  from acaps
  where acaps like '%ipb%'

Для меня следующая логичная вещь будет что-то вроде:

select *
  from acaps
  where acaps like '%ipb%'
  and subshitblabla where "Stopped" after the "," after the ipboard string.

Кто-нибудь знает, как заставить это работать?

2 ответа

Решение

Спасибо всем за проявленный интерес. Нашел решение, которое работает для меня, разместив здесь в качестве ссылки для других.

SELECT * FROM `acaps`
where acaps REGEXP '(ipboard)[,][0-9\-\>\.]*[,](Stopped)\;.*'

Предполагая, что thar col_name - это та сумма, которую вы не хотите использовать для фильтра. Если я правильно помню, вы можете сделать это так же, как

 select *
  from acaps
  where acaps.col_name like 'ipb%Stopped'
Другие вопросы по тегам