MySQL:从查询中提取regexp值

时间:2017-12-26 14:02:31

标签: mysql

我需要从给定的正则表达式中获取价值。

例如:

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

有没有办法可以从列值的这一部分中提取3150。列值存储了序列化对象,因此postalCode变量可以是null类型,这样我应检查正整数是否跟在; s:POSITIVE_INT:“postalCodeValue

3 个答案:

答案 0 :(得分:2)

使用#include "H5Cpp.h" #include <vector> #include <iostream> int main() { // open file H5::H5File fid = H5::H5File("example.h5",H5F_ACC_RDONLY); // open dataset, get data-type H5::DataSet dataset = fid.openDataSet("/path/to/string"); H5::DataSpace dataspace = dataset.getSpace(); H5::StrType datatype = dataset.getStrType(); // allocate output std::string data; // read output dataset.read(data, datatype, dataspace); std::cout << data << std::endl; }

SUBSTRING_INDEX

此查询将提取字符串中最后引用的数字。

Demo

答案 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 ;

答案 2 :(得分:0)

它也可以使用2次 SUBSTRING_INDEX

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