Este tema describe las funciones JSON compatibles con los clústeres de AnalyticDB for MySQL.
JSON_ARRAY_CONTAINS: Comprueba si un arreglo JSON contiene el
valueespecificado.JSON_ARRAY_LENGTH: Devuelve la longitud de un arreglo JSON.
JSON_CONTAINS (para versiones 3.1.5.0 y posteriores): Comprueba si la ruta especificada contiene el valor
candidate. Si no se especifica ninguna ruta, esta función comprueba si el destino contiene el valorcandidate.JSON_CONTAINS_PATH (para versiones 3.1.5.0 y posteriores): Comprueba si un documento JSON contiene alguna o todas las rutas especificadas.
JSON_EXTRACT: Extrae datos de un documento JSON en la ruta
json_pathespecificada.JSON_KEYS: Si se especifica
json_path, esta función devuelve todas las claves de la ruta indicada de un documento JSON. Si no se especificajson_path, la función devuelve todas las claves de la ruta raíz (json_path='$').JSON_OVERLAPS (para versiones 3.1.10.6 y posteriores): Comprueba si un documento JSON contiene alguno de los elementos especificados, como
candidate1,candidate2ocandidate3.JSON_REMOVE (para versiones 3.1.10.0 y posteriores): Elimina el elemento en la ruta
json_pathespecificada de un documentojsony devuelve la cadena modificada. Puede especificar varios elementos para eliminar mediantearray[json_path,json_path,...].JSON_SIZE: Devuelve el tamaño del objeto o arreglo JSON en la ruta
json_pathespecificada.JSON_SET (para versiones 3.2.2.8 y posteriores): Inserta o actualiza datos en un documento
jsonen la rutajson_pathespecificada y devuelve el documentojsonactualizado.JSON_UNQUOTE (versiones 3.2.2.11 y posteriores): Elimina las comillas dobles de
json_value, quita caracteres de escape específicos enjson_valuey devuelve el valor resultante.
JSON_ARRAY_CONTAINS
json_array_contains(json, value)
Descripción: Comprueba si un arreglo JSON contiene el
valueespecificado.Tipo de valor de entrada:
valuepuede ser de tipo numérico, cadena o BOOLEAN.Tipo de valor devuelto: BOOLEAN.
-
Ejemplo:
-
Compruebe si el arreglo JSON
[1, 2, 3]contiene el elemento2. La sentencia es la siguiente:SELECT json_array_contains('[1, 2, 3]', 2);Se devuelve el siguiente resultado:
+-------------------------------------+ | json_array_contains('[1, 2, 3]', 2) | +-------------------------------------+ | 1 | +-------------------------------------+
-
JSON_ARRAY_LENGTH
json_array_length(json)
Descripción: Devuelve la longitud de un arreglo JSON.
Tipo de valor de entrada: Cadena o JSON.
Tipo de valor devuelto: BIGINT.
-
Ejemplo:
-
Obtenga la longitud del arreglo JSON
[1, 2, 3]. La sentencia es la siguiente:SELECT json_array_length('[1, 2, 3]');Se devuelve el siguiente resultado:
+--------------------------------+ | json_array_length('[1, 2, 3]') | +--------------------------------+ | 3 | +--------------------------------+
-
JSON_CONTAINS
La función JSON_CONTAINS comprueba si un documento JSON especificado contiene un valor específico. Puede usar un índice de arreglo JSON en sus consultas para evitar escaneos completos de tabla o el análisis sintáctico de todo el documento JSON, lo que mejora la eficiencia de las consultas.
Sin índice JSON
Esta sintaxis solo es compatible con clústeres que tienen una versión de kernel 3.1.5.0 o posterior.
Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.
json_contains(target, candidate[, json_path])
-
Descripción:
Si se especifica
json_path, esta función comprueba si la ruta indicada contiene el valorcandidate. Devuelve1si el valor está contenido y0en caso contrario.Si no se especifica
json_path, esta función comprueba si el destino contiene el valorcandidate. Devuelve1si el valor está contenido y0en caso contrario.
Las reglas son las siguientes:
Si tanto
targetcomocandidateson tipos primitivos (NUMBER, BOOLEAN, STRING o NULL), se considera que el destino contiene al candidato si ambos son iguales.Si tanto
targetcomocandidateson arreglos JSON, se considera que el destino contiene al candidato si todos los elementos decandidateestán contenidos en algún elemento detarget.Si
targetes un arreglo ycandidateno lo es, se considera que el destino contiene al candidato sicandidateestá contenido en algún elemento detarget.Si tanto
targetcomocandidateson objetos JSON, se considera que el destino contiene al candidato si cada clave decandidatetambién existe entarget, y el valor de cada clave encandidateestá contenido en el valor de la clave correspondiente entarget.
Tipo de valor de entrada:
targetycandidateson de tipo JSON.json_pathes de tipo JSONPATH.Tipo de valor devuelto: BOOLEAN.
-
Ejemplos:
-
Compruebe si la ruta
$.acontiene el valor1. La sentencia es la siguiente:SELECT json_contains(json '{"a": 1, "b": 2, "c": {"d": 4}}', json '1', '$.a') as result;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 1 | +--------+ -
Compruebe si la ruta
$.bcontiene el valor1. La sentencia es la siguiente:SELECT json_contains(json '{"a": 1, "b": 2, "c": {"d": 4}}', json '1', '$.b') as result;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 0 | +--------+ -
Compruebe si
{"d": 4}está contenido en el destino. La sentencia es la siguiente:SELECT json_contains(json '{"a": 1, "b": 2, "c": {"d": 4}}', json '{"d": 4}') as result;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 0 | +--------+
-
Uso de un índice de arreglo JSON
Esta sintaxis solo es compatible con clústeres que tienen una versión de kernel 3.1.10.6 o posterior.
Debe crearse un índice de arreglo JSON para la columna JSON especificada. Para obtener más información, consulte Create a JSON array index.
Puede agregar
EXPLAINantes de su sentencia de consulta SQL para ver el plan de ejecución. Si el plan de ejecución no contiene el operadorScanFilterProject, significa que el índice de arreglo JSON se utilizó correctamente. De lo contrario, no se usó el índice.
json_contains(json_path, cast('[candidate1,candidate2,candidate3]' as json))
Descripción: Comprueba si el documento JSON especificado contiene todos los elementos indicados, como
candidate1,candidate2ycandidate3.Tipos de datos de los valores de entrada: Los valores
candidate1,candidate2,candidate3,...deben ser todos del mismo tipo de dato, ya sea numérico o cadena.Tipo de valor devuelto: VARCHAR.
-
Ejemplos:
-
Compruebe si la columna JSON especificada
vjcontieneCP-018673yCP-018671.SELECT json_contains(vj, cast('["CP-018673","CP-018671"]' AS json)) FROM json_test;Se devuelve el siguiente resultado:
+------------------------------------------------------------+ |json_contains(vj, cast('["CP-018673","CP-018671"]' AS json))| | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ | 1 | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ -
Compruebe si la columna JSON especificada
vjcontieneCP-018673,1y2.SELECT json_contains(vj, cast('["CP-018673",1,2]' AS json)) FROM json_test;Se devuelve el siguiente resultado:
+------------------------------------------------------------+ |json_contains(vj, cast('["CP-018673","CP-018671"]' AS json))| | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ | 1 | +------------------------------------------------------------+ | 1 | +------------------------------------------------------------+ | 0 | +------------------------------------------------------------+ | 1 | +------------------------------------------------------------+
-
JSON_CONTAINS_PATH
json_contains_path(json, one_or_all, json_path[, json_path,...])
Esta función solo es compatible con clústeres que tienen una versión de kernel 3.1.5.0 o posterior.
Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.
-
Descripción del comando: Comprueba si la ruta especificada existe en el objeto JSON.
Si
one_or_allse establece en'one', la función devuelve1si el documento JSON contiene alguna de las rutas especificadas. De lo contrario, devuelve0.Si
one_or_allse establece en'all', la función devuelve1si el documento JSON contiene todas las rutas especificadas. De lo contrario, devuelve0.
Tipo de valor de entrada:
jsones de tipo JSON.one_or_alles de tipo VARCHAR y puede ser'one'o'all'(sin distinción entre mayúsculas y minúsculas).json_pathes una expresión de ruta.Tipo de valor devuelto: BOOLEAN.
-
Ejemplos:
-
Compruebe si el documento JSON contiene al menos una de las rutas
$.ay$.e. La sentencia es la siguiente:SELECT json_contains_path(json '{"a": 1, "b": 2, "c": {"d": 4}}', 'one', '$.a', '$.e') AS RESULT;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 1 | +--------+ -
Compruebe si el documento JSON contiene ambas rutas
$.ay$.e. La sentencia es la siguiente:SELECT json_contains_path(json '{"a": 1, "b": 2, "c": {"d": 4}}', 'all', '$.a', '$.e') AS RESULT;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 0 | +--------+
-
JSON_EXTRACT
El valor devuelto por la función
JSON_EXTRACT, al igual que las columnas de tipo JSON, no admiteORDER BY.Al usar la función
JSON_EXTRACTjunto con la funciónJSON_UNQUOTE, primero debe usar CAST AS VARCHAR para convertir el valor devuelto porJSON_EXTRACTal tipo VARCHAR. El valor convertido puede usarse después como parámetro de entrada para la funciónJSON_UNQUOTE.
json_extract(json, json_path)
-
Descripción: Extrae un valor de un documento JSON en la ruta
json_pathespecificada. Si una clave en el documentojsoncontiene caracteres especiales, como$o., el formato dejson_pathdebe ser'$["Key"]'.Por ejemplo, si la clave es
$data,json_pathdebe ser'$["$data"]'. Tipo de valor de entrada: Cadena o JSON.
Tipo de valor devuelto: JSON.
-
Ejemplos:
-
Obtenga el valor en la ruta
$[0]del arreglo[10, 20, [30, 40]]. La sentencia es la siguiente:SELECT json_extract('[10, 20, [30, 40]]', '$[0]');Se devuelve el siguiente resultado:
+-------------------------------------------+ | json_extract('[10, 20, [30, 40]]', '$[0]') | +-------------------------------------------+ | 10 | +-------------------------------------------+ -
Obtenga el valor de la ruta
$datede{"id":"1","$date":"12345"}. La sentencia es la siguiente:SELECT JSON_EXTRACT('{"id":"1","$date":"12345"}', '$["$date"]');Se devuelve el siguiente resultado:
+---------------------------------------------------------+ |JSON_EXTRACT('{"id":"1","$date":"12345"}', '$["$date"]') | +---------------------------------------------------------+ | "12345" | +---------------------------------------------------------+
-
JSON_KEYS
json_keys(json[, json_path])
-
Descripción
Si se especifica
json_path, esta función devuelve todas las claves de la ruta indicada del documento JSON.Si no se especifica
json_path, esta función devuelve todas las claves de la ruta raíz (json_path='$').
-
Tipo de valor de entrada: Solo se admiten parámetros de tipo JSON.
Puede construir datos JSON de las siguientes maneras:
Use datos JSON directamente. Por ejemplo,
json '{"a": 1, "b": {"c": 30}}'.Convierta explícitamente una cadena a datos JSON mediante la función CAST. Por ejemplo,
CAST('{"a": 1, "b": {"c": 30}}' AS json).
Tipo de valor devuelto: JSON ARRAY.
-
Ejemplos:
-
Obtenga todas las claves de la ruta
$.b. La sentencia es la siguiente:SELECT json_keys(CAST('{"a": 1, "b": {"c": 30}}' AS json),'$.b');Se devuelve el siguiente resultado:
+-----------------------------------------------------------+ | json_keys(CAST('{"a": 1, "b": {"c": 30}}' AS json),'$.b') | +-----------------------------------------------------------+ | ["c"] | +-----------------------------------------------------------+ -
Obtenga todas las claves de la ruta raíz. La sentencia es la siguiente:
SELECT JSON_KEYS(json '{"a": 1, "b": {"c": 30}}');Se devuelve el siguiente resultado:
+--------------------------------------------+ | JSON_KEYS(json '{"a": 1, "b": {"c": 30}}') | +--------------------------------------------+ | ["a","b"] | +--------------------------------------------+
-
JSON_OVERLAPS
Esta sintaxis solo es compatible con clústeres que tienen una versión de kernel 3.1.10.6 o posterior.
Debe crearse un índice de arreglo JSON para la columna JSON especificada. Para obtener más información, consulte Create a JSON array index.
Puede agregar
EXPLAINantes de su sentencia de consulta SQL para ver el plan de ejecución. Si el plan de ejecución no contiene el operadorScanFilterProject, significa que el índice de arreglo JSON se utilizó correctamente. De lo contrario, no se usó el índice.
json_overlaps(json, cast('[candidate1,candidate2,candidate]' as json))
Descripción: Comprueba si el documento JSON especificado contiene alguno de los elementos indicados, como
candidate1,candidate2ocandidate3.Tipos de datos de los valores de entrada:
candidate1,candidate2,candidate3,...pueden ser de tipo numérico o cadena, y todos los valores deben tener el mismo tipo de dato.Tipo de valor devuelto: VARCHAR.
-
Ejemplos:
-
Obtenga datos de la columna JSON especificada
vjque contenganCP-018673.SELECT * FROM json_test WHERE json_overlaps(vj, cast('["CP-018673"]' AS json));Se devuelve el siguiente resultado:
+-----+----------------------------------------------------------------------------+ | id | vj | +-----+----------------------------------------------------------------------------+ | 2 | ["CP-018673", 1, false] | +-----+----------------------------------------------------------------------------+ | 3 | ["CP-018673", 1, false, {"a": 1}] | +-----+----------------------------------------------------------------------------+ | 5 | ["CP-018673","CP-018671","CP-018672","CP-018670","CP-018669","CP-018668"] | +-----+----------------------------------------------------------------------------+ -
Obtenga datos de la columna JSON especificada
vjque contengan cualquiera de los elementos1,2o3.SELECT * FROM json_test WHERE json_overlaps(vj, cast('[1,2,3]' AS json))Se devuelve el siguiente resultado:
+-----+-------------------------------------+ | id | vj | +-----+-------------------------------------+ | 1 | [1,2,3] | +-----+-------------------------------------+ | 2 | ["CP-018673", 1, false] | +-----+-------------------------------------+ | 3 | ["CP-018673", 1, false, {"a": 1}] | +-----+-------------------------------------+
-
JSON_REMOVE
La función JSON_REMOVE solo es compatible con clústeres que tienen una versión de kernel 3.1.10.0 o posterior.
Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.
json_remove(json,json_path)
json_remove(json,array[json_path,json_path,...])
Descripción: Elimina el elemento en la ruta
json_pathespecificada de un documentojsony devuelve la cadena modificada. Puede especificar varios elementos para eliminar mediantearray[json_path,json_path,...].Tipo de valor de entrada:
jsones una cadena VARCHAR en formato JSON.json_pathes una cadena VARCHAR en formato JSON.Tipo de valor devuelto: VARCHAR.
-
Ejemplos
-
Elimine el elemento en la ruta
$.glossary.GlossDivy obtenga la cadena modificada. La sentencia es la siguiente:SELECT json_remove( '{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "markup" } } } } }' , '$.glossary.GlossDiv') a;Se devuelve el siguiente resultado:
{"glossary":{"title":"example glossary"}} -
Elimine los elementos en las rutas
$.glossary.titley$.glossary.GlossDiv.titley obtenga la cadena modificada. La sentencia es la siguiente:SELECT json_remove( '{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "markup" } } } } }' , array['$.glossary.title', '$.glossary.GlossDiv.title']) a;Se devuelve el siguiente resultado:
{"glossary":{"GlossDiv":{"GlossList":{"GlossEntry":{"GlossTerm":"Standard Generalized Markup Language","GlossSee":"markup","SortAs":"SGML","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"ID":"SGML","Acronym":"SGML","Abbrev":"ISO 8879:1986"}}}}}
-
JSON_SIZE
json_size(json, json_path)
-
Descripción: Devuelve el tamaño de un objeto o arreglo JSON en la ruta
json_pathespecificada.NotaSi
json_pathno apunta a un objeto o arreglo JSON, esta función devuelve0. Tipo de valor de entrada: Cadena o JSON.
Tipo de valor devuelto: BIGINT.
-
Ejemplos:
-
json_pathapunta a un objeto JSON. La sentencia es la siguiente:SELECT json_size('{"x":{"a":1, "b": 2}}', '$.x') as result;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 2 | +--------+ -
json_pathno apunta a un objeto o arreglo JSON. La sentencia es la siguiente:SELECT json_size('{"x": {"a": 1, "b": 2}}', '$.x.a') as result;Se devuelve el siguiente resultado:
+--------+ | result | +--------+ | 0 | +--------+
-
JSON_SET
La función JSON_SET solo es compatible con clústeres que tienen una versión de kernel 3.2.2.8 o posterior.
Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.
json_set(json, json_path, value[, json_path, value] ...)
-
Descripción: Inserta o actualiza datos en un documento
jsonen la rutajson_pathespecificada y devuelve el documentojsonactualizado.Si
jsonojson_pathes null, la función devuelve null.Si el documento
jsonno tiene un formato JSON válido, o si alguna rutajson_pathno es una expresión de ruta válida, se genera una excepción.Si la ruta
json_pathespecificada existe, su valor se sobrescribe convalue.-
Si la ruta
json_pathespecificada no existe en el documentojson:Si
json_pathapunta a un objeto JSON,valuese agrega como un nuevo elemento en la ubicación especificada porjson_path.Si
json_pathapunta a un arreglo JSON, esta función comprueba si existen datos en la posición anterior a la rutajson_pathespecificada. Si no existen datos, se agregan valoresnullpara llenar el espacio antes de insertarvalue. De lo contrario,valuese inserta directamente.En otros casos, se genera una excepción.
-
Tipos de valores de entrada:
json: VARCHAR o JSON.json_path: VARCHAR.value: BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, VARCHAR, VARBINARY, DATE, DATETIME, TIMESTAMP o TIME.
Tipo de valor devuelto: JSON.
-
Ejemplos:
-
Insertar datos en un documento
jsondondejson_pathes null.SELECT JSON_SET('{ "a": 1, "b": [2, 3]}', null, '10');Resultado:
+------------------------------------------------+ | JSON_SET('{ "a": 1, "b": [2, 3]}', NULL, '10') | +------------------------------------------------+ | null | +------------------------------------------------+ -
Insertar datos en un documento
jsondondejson_pathno es una expresión de ruta válida.SELECT JSON_SET('{ "a": 1, "b": [2, 3]}', '$.b.c', '10');Resultado:
Failed to execute json_set() for json_path: $.b.c -
Insertar datos en un documento
jsondondejson_path1existe, yjson_path2no existe y apunta a un objeto JSON.SELECT JSON_SET('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]');Resultado:
+-----------------------------------------------------------------------+ | JSON_SET('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]') | +-----------------------------------------------------------------------+ | {"a":10,"b":[2,3],"c":"[true, false]"} | +-----------------------------------------------------------------------+ -
Insertar datos en un documento
jsondonde la rutajson_pathespecificada no existe y apunta a un arreglo JSON.SELECT JSON_SET('{ "a": 1, "b": [2, 3]}', '$.b[4]', '[true, false]');Resultado:
+----------------------------------------------------------------+ | JSON_SET('{ "a": 1, "b": [2, 3]}', '$.b[4]', '[true, false]') | +----------------------------------------------------------------+ | {"a":1,"b":[2,3,null,null,"[true, false]"]} | +----------------------------------------------------------------+
-
JSON_UNQUOTE
json_unquote(json_value)
Esta función solo es compatible con clústeres que tienen una versión de kernel 3.1.5.0 o posterior.
Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.
-
Este comando elimina las comillas dobles de
json_value, procesa ciertos caracteres de escape y devuelve el valor resultante.AnalyticDB for MySQL no valida
json_value. Esta función procesa el valor según la lógica descrita, independientemente de sijson_valuecumple con la sintaxis JSON.Los caracteres de escape compatibles se enumeran en la siguiente tabla.
Antes de eliminar el escape
Después de eliminar el escape
\"Comilla doble (
").\bRetroceso.
\fSalto de formulario.
\nSalto de línea.
\rRetorno de carro.
\tTabulación.
\\Barra invertida (
\).\uXXXXRepresentación de carácter UTF-8.
Tipo de valor de entrada: VARCHAR.
Tipo de valor devuelto: VARCHAR.
-
Ejemplos:
-
Devolver la cadena sin comillas
abc. La sentencia es la siguiente:SELECT json_unquote('"abc"');Se devuelve el siguiente resultado:
+-----------------------+ | json_unquote('"abc"') | +-----------------------+ | abc | +-----------------------+ -
La siguiente sentencia devuelve la cadena sin comillas y procesada:
SELECT json_unquote('"\\t\\u0032"');El resultado es el siguiente:
+------------------------------+ | json_unquote('"\\t\\u0032"') | +------------------------------+ | 2 | +------------------------------+
-
Apéndice: Sintaxis de JSON Path
Uso
Utilice
$.keyName[.keyName]...para acceder a una clave específica en un objeto JSON.Utilice
$[nonNegativeInteger]para acceder al enésimo elemento de un arreglo JSON, donde n es un entero no negativo.Utilice
$.keyName[.keyName]...[nonNegativeInteger]para acceder al enésimo elemento de un arreglo JSON anidado en un objeto JSON, donde n es un entero no negativo.
Notas
La sintaxis de JSON Path en AnalyticDB for MySQL no admite los caracteres comodín * y **. Esto significa que no se admiten expresiones como '$.*', '$.hobbies[*]', '$.address.**' y '$.hobbies.**'.
Ejemplos
Suponga que tiene los siguientes datos JSON.
{
"name": "Alice",
"age": 25,
"address": {
"city": "Hangzhou",
"zip": "10001"
},
"hobbies":["reading", "swimming", "cycling"]
}
|
Descripción |
Ejemplo correcto |
Ejemplo incorrecto |
|
Acceder al valor de la clave |
$.name |
name |
|
Acceder al valor de la clave |
$.address.city |
$.address[0] |
|
Acceder al primer elemento del arreglo JSON |
$.hobbies[0] |
$.hobbies.[0] |
Preguntas frecuentes
¿Cómo resuelvo el error java.lang.NullPointerException al usar la función JSON_OVERLAPS?
Causa: Este error ocurre si utiliza una sentencia ALTER para crear un índice JSON, pero la operación BUILD no se ha ejecutado o aún no ha finalizado. En este caso, el índice JSON no está activo.
Solución:
-
Si la operación
BUILDno se ha ejecutado:Un clúster de AnalyticDB for MySQL automatically triggers a `BUILD` task cuando se cumplen ciertas condiciones. También puede manually trigger a `BUILD` task.
-
Si la operación
BUILDse ha ejecutado:Puede ejecutar la siguiente sentencia para consultar el estado de la tarea
BUILD. Si el campostatusen el resultado devuelto esFINISH, la operaciónBUILDha finalizado.SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;
Para obtener más información sobre BUILD, consulte BUILD.
Referencias
JSON: Describe el tipo de datos JSON.
JSON indexes: Describe cómo crear índices para objetos y arreglos JSON.