我的行值是这样:
{
"df8fb54b-dc58-2342-a5ee-2fdg4536h76": {
"doc_name": "Missing File",
"details": {
"e2341431-ed8a-6aa4-b4541-d11771ae2456": "updated, No reference"
}
}
}
由此,我希望输出为updated, No reference
尝试过substring(syntax, position)
我只想从该语法获得updated, No reference
作为输出。
有人可以帮我吗?
答案 0 :(得分:0)
您可以尝试JSON_EXTRACT
从列字符串中解析json值:
-- Change column_name and table_name depending on your table
Select
JSON_EXTRACT(column_name, '$.df8fb54b-dc58-2342-a5ee-2fdg4536h76.details.e2341431-ed8a-6aa4-b4541-d11771ae2456')
From table_name
它应该导致包含"updated, No reference"
的引号。如果您也要删除它们,请参见以下问题:How can I use JSON_EXTRACT in MySQL and get a string without the quotes?
由于您的问题尚不清楚,因此我假设您将为每种情况使用相同的键。
答案 1 :(得分:0)
如果您使用的是5.7.17以上的mysql版本,则可以使用JSON_EXTRACT
。否则,您将不得不使用SUBSTRING
函数。
使用SUBSTRING
的示例:
SELECT SUBSTRING(LabelName, 119, 21) FROM TableName WHERE ColumnName LIKE '%details%';
此查询将获取包含'details'的列,而SUBSTRING
函数将从长度为21的位置119修剪。但是,此查询有点奇怪。如果您使用的是JSON列,那么请升级到支持JSON_EXTRACT
函数的更高版本的mysql,或以这种方式获取该列并在应用程序级代码中对其进行处理。