2016-12-16 79 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 
相關問題