如何从语法中获取特定单词

时间:2019-05-15 08:32:00

标签: mysql sql

我的行值是这样:

{
    "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作为输出。

有人可以帮我吗?

2 个答案:

答案 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,或以这种方式获取该列并在应用程序级代码中对其进行处理。