2016-12-16 46 views
0

对不起,如果它之前问过,但我找不到任何有用的东西。使用MySQL 5.7,我得到了具有以下格式{“Births:”21678}的“Statistics”列。我怎样才能只选择数值?如何从MySQL中的列(varchar)中仅提取数值?

例如:

Name    Statistics 

Amsterdam   {"Births:" 23456} 

Chicago   {"Births:" 67890} 

我想输出是:

Name   Births 

Amsterdam 23456 

Chicago  67890 

我想我应该用REGEXP,但似乎没有在我的情况下工作。

姓名和出生都是专栏。

回答

0

您也可以使用字符串函数

select 
    name 
, SUBSTRING(SUBSTRING(Statistics , 1, CHAR_LENGTH(Statistics) -1), 
    POSITION(' ' IN SUBSTRING(Statistics , 1, CHAR_LENGTH(Statistics) - 1)), 100) AS Births 
from my_table 
0

你不能做到这一点,因为REGEXP只会在WHERE子句,但不是在选择工作。如果您统计列只有始终包含出生,你可以这样做

SELECT select MID(Statistics, 11, LENGTH(Statistics)-11) FROM table 

但这只会与上面给出的示例工作。如果统计数据不同,这种方法将不起作用。

如果你有一个MySQL服务器版本5.7.8或更高,你可以使用JSON函数。应该是

SELECT JSON_EXTRACT(Statistics, 'Births') from table 
相关问题