[英]CAST TO DATE into JSON_TABLE DEFINITION - Oracle
I have the next code:我有下一个代码:
INSERT INTO TMP_VDD_JSON
VALUES (
200, 2, 4010,
'{
"Cuenta": [
{
"persona": {"nombre": "Pedro", "documento": "9876543A", "fecha-nacimiento": "02/02/1982", "ciudad": "Barcelona"}
}
]
);
I want to convert it into JSON_TABLE.我想把它转换成 JSON_TABLE。
SELECT jt.NOMBRE, jt.DOCUMENTO, jt.FECHA_NACIMIENTO, jt.CIUDAD
FROM TMP_VDD_JSON tmp,
JSON_TABLE(tmp.JSON_OBJ, '$.Cuenta[0].persona'
COLUMNS (
NOMBRE PATH '$.nombre',
DOCUMENTO PATH '$.documento',
**FECHA_NACIMIENTO DATE PATH '$."fecha-nacimiento",**
CIUDAD PATH '$.ciudad'
)) jt
The main purpose is to cast the field FECHA_NACIMIENTO implicit to DATE, INTO clause of JSON_TABLE.主要目的是将字段 FECHA_NACIMIENTO隐式转换为 JSON_TABLE 的 DATE、INTO 子句。
¡ I NO WANT TO DO IT INTO SELECT STATEMENT? ¡我不想在 SELECT 声明中这样做? There are any way?
有什么办法吗?
There are any way?
有什么办法吗?
Yes, if your date is in ISO 8601 format:是的,如果您的日期采用 ISO 8601 格式:
CREATE TABLE tmp_vdd_json(
JSON_OBJ CLOB CHECK ( json_obj IS JSON )
);
INSERT INTO TMP_VDD_JSON
VALUES (
'{"Cuenta": [{"persona": {
"nombre": "Pedro",
"documento": "9876543A",
"fecha-nacimiento": "1982-02-02",
"ciudad": "Barcelona"
}}]}'
);
Then your query (if you add the missing closing single-quote) works:然后您的查询(如果您添加缺少的单引号)有效:
SELECT jt.NOMBRE, jt.DOCUMENTO, jt.FECHA_NACIMIENTO, jt.CIUDAD
FROM TMP_VDD_JSON tmp,
JSON_TABLE(tmp.JSON_OBJ, '$.Cuenta[0].persona'
COLUMNS (
NOMBRE PATH '$.nombre',
DOCUMENTO PATH '$.documento',
FECHA_NACIMIENTO DATE PATH '$."fecha-nacimiento"',
CIUDAD PATH '$.ciudad'
)) jt
And outputs:并输出:
NOMBRE 名词
DOCUMENTO 文件
FECHA_NACIMIENTO FECHA_NACIMIENTO
CIUDAD 城
Pedro 佩德罗
9876543A 9876543A
02-FEB-82 02-FEB-82
Barcelona 巴塞罗那
If you have a non-standard date format then, no, it will not work and you need to perform the conversion in the select list like this (adjust the format model for your data):如果您有一个非标准的日期格式,那么,不,它不起作用,您需要像这样在 select 列表中执行转换(为您的数据调整格式 model):
SELECT jt.NOMBRE,
jt.DOCUMENTO,
TO_DATE( jt.FECHA_NACIMIENTO, 'YYYY-MM-DD' ) AS FECHA_NACIMIENTO,
jt.CIUDAD
FROM TMP_VDD_JSON tmp
CROSS APPLY JSON_TABLE(
tmp.JSON_OBJ,
'$.Cuenta[0].persona'
COLUMNS (
NOMBRE VARCHAR2(20) PATH '$.nombre',
DOCUMENTO VARCHAR2(20) PATH '$.documento',
FECHA_NACIMIENTO VARCHAR2(20) PATH '$."fecha-nacimiento"',
CIUDAD VARCHAR2(20) PATH '$.ciudad'
)
) jt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.