如何从mysql中的列(varchar)中仅提取数值?

时间:2016-12-16 15:42:03

标签: mysql linux

抱歉,如果有人问过,但我找不到任何有用的东西。使用MySQL 5.7,我得到了“Statistics”列,它具有以下格式{“Births:”21678}。如何只选择数值?

例如:

Name              Statistics 

Amsterdam         {"Births:" 23456}

Chicago           {"Births:" 67890}

我希望输出为:

Name         Births 

Amsterdam    23456

Chicago      67890

我想我应该使用REGEXP,但在我的情况下似乎没有任何效果。

名称和出生都是列。

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

你不能这样做,因为REGEXP只能在WHERE子句中工作,而不能在select中工作。如果仅 Statistics-column 并且始终包含 Births ,您可以执行类似

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

但这只适用于上面给出的例子。如果统计数据不同,这种方法将无效。

如果你有一个5.7.8或更高版本的mysql-server,你可以使用JSON函数。应该是

SELECT JSON_EXTRACT(Statistics, 'Births') from table