Мне нужно было бы получить значение из данного регулярного выражения.
Например:
> :"postalCode";s:4:"3150";
Есть ли способ извлечь 3150 из этой части значения столбца. Значение столбца хранит сериализованные объекты, поэтому переменная postalCode может быть нулевым типом, таким образом, я должен проверить, следует ли следующее положительное целое : s: POSITIVE_INT: "postalCodeValue
Используйте SUBSTRING_INDEX
:
SELECT
SUBSTRING(SUBSTRING_INDEX(col, '"', -2), 1,
INSTR(SUBSTRING_INDEX(col, '"', -2), '"') - 1) AS num
FROM yourTable;
Этот запрос будет извлекать последний цитируемый номер в вашей строке.
Он также работает с 2 раза SUBSTRING_INDEX
SELECT
SUBSTRING_INDEX (SUBSTRING_INDEX( ':"postalCode";s:4:"3150";', '"',-2) , '"', 1);
избегая 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 ;
:"postalCode";s:4:"3150";
это не полная строка, для которой я вызываю эти процедуры), и я должен указать на нее и получить значение.s:4:
отделять почтовый индекс от номера?