【问题标题】:SELECT query in MYSQL stored functionMYSQL 存储函数中的 SELECT 查询
【发布时间】:2018-06-21 06:13:18
【问题描述】:

我需要在我的存储函数中使用变量运行以下查询

SELECT json_unquote(json_extract(value,'$."_key"')) INTO org_rank_value FROM preferences WHERE id=_id;

这里 _key 和 _id 是声明的变量,但 _key 没有被 value 替换,因为它在引号中。有什么方法可以构建和执行上述查询吗?

【问题讨论】:

  • 你能给我一些表格中的示例数据吗?
  • 我不知道这是否会起作用,但是您可以使用CONCAT函数在select之前在变量中构造'$."_key"',然后在SELECT语句中使用该变量跨度>

标签: mysql stored-procedures stored-functions


【解决方案1】:

如果没有关于您的数据库结构的更多上下文,这就是我解释您的问题的方式。

1) 你想选择一个特定的 ID。

2) 您想根据 ID 更改 json 字段中的参数。

3) 你想执行查询。

DECLARE @json NVARCHAR(MAX) = (SELECT org_rank_value FROM preferences WHERE id=_id)
SELECT * FROM OPENJSON(@json) 
WITH (  
    yourKey varchar(200) '$.key' -- change to whatever your variables are. 
 )  AS changeKey;
UPDATE preferences SET json_unquote(json_extract(value,'$."_key"')) INTO org_rank_value WHERE id=_id;

在 MySQL 中,你可以使用 JSON_ARRAY_APPEND

【讨论】:

  • 我需要获取 json 数据类型中键的值,这应该在我的函数中设置为变量
  • @Vinay 更新了答案。
  • @Vinay 我的第一个查询就是这样做的。但如果你HAVE使用你的查询..试试上面的。
  • OPENJSON 在 MySQL 数据库中不可用
  • 好的,我认为它在 mySql 中可用。你可以改用JSON_ARRAY_APPEND。我会更新答案。
猜你喜欢
  • 2014-08-15
  • 2018-01-28
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多