从mysql字段中的json中提取数据

Zuk*_*ker 6 regex mysql json group-by

我有一个包含行的表,其中一行有一个包含这样数据的字段

{"name":"Richard","lastname":null,"city":"Olavarria","cityId":null}
Run Code Online (Sandbox Code Playgroud)

我想选择我所拥有的所有不同的"城市"价值观.只使用mysql服务器.

可能吗?我正在尝试这样的事情

SELECT id FROM table_name WHERE field_name REGEXP '"key_name":"([^"]*)key_word([^"]*)"';
Run Code Online (Sandbox Code Playgroud)

但我无法使正则表达式工作

提前致谢

Dmi*_*ryK 11

MySQL在版本5.7.7中支持JSON http://mysqlserverteam.com/json-labs-release-native-json-data-type-and-binary-format/ 您将能够有效地使用jsn_extract函数解析您的JSON字符串.

如果你有一个旧的版本,并且你想纯粹在mysql中解决它,那么我担心你必须把它当作一个字符串并从中削减它的价值(只是正常的字符串函数或使用正则表达式)这不是优雅但它将工作

http://sqlfiddle.com/#!9/97cfd/14

SELECT
  DISTINCT(substring(jsonfield, locate('"city":',jsonfield)+8,
     locate('","', jsonfield, locate('"city":',jsonfield))-locate('"city":',jsonfield)-8)
  )
FROM
  ForgeRock
Run Code Online (Sandbox Code Playgroud)