MySQL: извлечение значения регулярного выражения из запроса

0

Мне нужно было бы получить значение из данного регулярного выражения.

Например:

> :"postalCode";s:4:"3150";

Есть ли способ извлечь 3150 из этой части значения столбца. Значение столбца хранит сериализованные объекты, поэтому переменная postalCode может быть нулевым типом, таким образом, я должен проверить, следует ли следующее положительное целое : s: POSITIVE_INT: "postalCodeValue

Теги:

3 ответа

2
Лучший ответ

Используйте SUBSTRING_INDEX:

SELECT
    SUBSTRING(SUBSTRING_INDEX(col, '"', -2), 1,
              INSTR(SUBSTRING_INDEX(col, '"', -2), '"') - 1) AS num
FROM yourTable;

Этот запрос будет извлекать последний цитируемый номер в вашей строке.

демонстрация

  • 0
    Извините, я забыл упомянуть, что это только часть огромного значения, которая хранится в типе столбца, поэтому она находится в середине значения этой части. Он имеет некоторое случайное значение до и после него ( :"postalCode";s:4:"3150"; это не полная строка, для которой я вызываю эти процедуры), и я должен указать на нее и получить значение.
  • 0
    Всегда ли s:4: отделять почтовый индекс от номера?
Показать ещё 1 комментарий
0

Он также работает с 2 раза SUBSTRING_INDEX

SELECT 
SUBSTRING_INDEX (SUBSTRING_INDEX( ':"postalCode";s:4:"3150";', '"',-2) , '"', 1);
0

избегая regexp, вы можете использовать некоторую строковую функцию, например:

SELECT LENGTH(':"postalCode";s:4:"3150"') - LOCATE(':', REVERSE(':"postalCode";s:4:"3150"'))+1
from dual ;

или же

SELECT LENGTH(col_name) - LOCATE(':', REVERSE(col_name))+1
from my_table ;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню