mysql - MYSQL,使用带有 JSON_TABLE 的函数参数或变量导致错误 1049 (42000):未知数据库
问题描述
我可以将函数参数或参数传递给 MYSQL 的 JSON 函数吗?正如下面所示,当我尝试它时,我得到了一个虚假消息“ERROR 1049 (42000): Unknown database ''”。我确信我可能遗漏了一些明显的东西。我可以用 Oracle 做到这一点。如果我不能直接使用变量,我的选择是什么,我唯一能想到的就是一个临时表,这可能会非常昂贵?
mysql> select count(*) CNT from JSON_TABLE( '[1,2,3]','$[*]' COLUMNS(I INTEGER PATH '$')) X;
--------------
select count(*) CNT from JSON_TABLE( '[1,2,3]','$[*]' COLUMNS(I INTEGER PATH '$')) X
--------------
+-----+
| CNT |
+-----+
| 3 |
+-----+
1 row in set (0.00 sec)
mysql> set @X = '[4,5,6]';
--------------
set @X = '[4,5,6]'
--------------
Query OK, 0 rows affected (0.00 sec)
mysql> select count(*) CNT from JSON_TABLE( @X,'$[*]' COLUMNS(I INTEGER PATH '$')) X;
--------------
select count(*) CNT from JSON_TABLE( @X,'$[*]' COLUMNS(I INTEGER PATH '$')) X
--------------
+-----+
| CNT |
+-----+
| 3 |
+-----+
1 row in set (0.00 sec)
mysql> drop function if exists COUNT_ROWS;
--------------
drop function if exists COUNT_ROWS
--------------
Query OK, 0 rows affected (0.06 sec)
mysql> DELIMITER $$
mysql> CREATE FUNCTION COUNT_ROWS(X JSON)
-> returns INTEGER DETERMINISTIC
-> begin
-> DECLARE CNT INTEGER;
-> SET CNT = (
-> select CNT = count(*)
-> from JSON_TABLE(
-> X,
-> '$[*]'
-> COLUMNS (
-> I INTEGER PATH '$'
-> )
-> ) X);
-> RETURN CNT;
-> end;
-> $$
--------------
CREATE FUNCTION COUNT_ROWS(X JSON)
returns INTEGER DETERMINISTIC
begin
DECLARE CNT INTEGER;
SET CNT = (
select CNT = count(*)
from JSON_TABLE(
X,
'$[*]'
COLUMNS (
I INTEGER PATH '$'
)
) X);
RETURN CNT;
end;
--------------
Query OK, 0 rows affected (0.02 sec)
mysql> --
mysql> DELIMITER ;
mysql> select COUNT_ROWS('[1,2,3]');
--------------
select COUNT_ROWS('[1,2,3]')
--------------
ERROR 1049 (42000): Unknown database ''
解决方案
推荐阅读
- javascript - 试图在 mapbox 中绘制一个 turf.js 缓冲区但收到“无效单元”错误
- java-8 - Cucumber/TestNg 使用 Java 8 并行流
- php - 如何在 AJAX 中检索选择器的值并将其保存在 PHP 中?
- c# - 如何在一天内从 8:00 到 22:00 c# datetimepickers 搜索所有工作时间的订单?
- ios - ReplayKit 错误 RRPRecordingErrorFailedToStartCaptureStack 是什么意思?
- javascript - 浏览器缩放会破坏 svg 布局
- c# - 获取列表中出现次数最多的前 3 个数字
- macos - Mac 上的 CakePHP - 自制 HTTPD
- amazon-sqs - 为什么要解耦有快速生产者和慢消费者的应用程序?怎么了?
- python - 为数据框的每一行创建一个单独的线程