MYSQL 存储函数中的 SELECT 查询

Posted

技术标签:

【中文标题】MYSQL 存储函数中的 SELECT 查询【英文标题】:SELECT query in MYSQL stored function 【发布时间】: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语句中使用该变量跨度> 【参考方案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。我会更新答案。

以上是关于MYSQL 存储函数中的 SELECT 查询的主要内容,如果未能解决你的问题,请参考以下文章

mysql 存储过程中 查询语句后面的from加上变量名 怎么写

mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select 或者 select (*))

存储过程中的动态MYSQL查询

mysql中(存储)函数

存储过程中的mysql动态查询

mysql查看所有存储过程