JSON_EXTRACT密钥字符串中的MySQL 5.7转义正斜杠

时间:2019-12-13 02:13:22

标签: php mysql json

我找不到解决方案的非常简单的问题。

我有一个简单的JSON字符串:

{
  "A/B/C":"Random value"
}

它存储在MySQL数据库中。我正在尝试使用JSON_EXTRACT来检索数据。

SELECT 
  JSON_EXTRACT(`json_data`, "$.A/B/C") AS 'A/B/C'
FROM `MyTable` 
WHERE 1

由于斜杠,这当然会引发错误。如何在不将斜杠从原始JSON删除的情况下对其进行查询?

1 个答案:

答案 0 :(得分:1)

您可以通过在双引号中引用密钥名称来获得所需的结果;这是必需的,因为它包含非法的路径字符(请参见manual)。这意味着您需要将整体路径用单引号引起来:

SET @json = '{
  "A/B/C":"Random value"
}'
;
SELECT JSON_EXTRACT(@json, '$."A/B/C"') AS 'A/B/C'

输出:

A/B/C
"Random value"

Demo on dbfiddle