[英]How to “select where” within json in Oracle SQL Developer?
I have a table called DISCOUNT_CODES with two columns, one having JSON values:我有一个名为 DISCOUNT_CODES 的表,其中包含两列,一列具有 JSON 值:
CODE ACTIVE
1234 {"active":"Y"}
2468 {"active":"N"}
1359 {"active":"Y"}
As the second column is in JSON, I was wondering if there was a way I can select the codes that are active without having to do a select query like:由于第二列在 JSON 中,我想知道是否有办法可以 select 激活代码,而无需执行 select 查询,例如:
SELECT CODE FROM DISCOUNT_CODES WHERE ACTIVE = '{"active":"Y"}';
In pseudo-code, I am wondering if something like this is possible:在伪代码中,我想知道这样的事情是否可能:
SELECT CODE FROM DISCOUNT_CODES WHERE JSON(ACTIVE $.active) = "Y";
Edit: I am using Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production编辑:我正在使用 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
Yes, you can use a SELECT statement containing JSON_TABLE()
function for the DB version 12c+ such as the one below:是的,您可以对 DB 版本 12c+ 使用包含JSON_TABLE()
function 的 SELECT 语句,如下所示:
SELECT d.code
FROM discount_codes d
CROSS JOIN JSON_TABLE(active, '$' COLUMNS (
active VARCHAR2(100) PATH '$.active'
)
) j
WHERE j.active = 'Y'
You can also use JSON_EXISTS
您也可以使用JSON_EXISTS
SELECT CODE FROM DISCOUNT_CODES
WHERE json_exists(ACTIVE, '$?(@.active == "Y")');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.