morrySnow commented on code in PR #1827: URL: https://github.com/apache/doris-website/pull/1827#discussion_r1918687034
########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-extract.md: ########## @@ -24,84 +24,108 @@ specific language governing permissions and limitations under the License. --> -## json_extract - ## 描述 -## 语法 +JSON_EXTRACT 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +* JSON_EXTRACT 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 +* JSONB_EXTRACT 返回 JSON 类型 +* JSON_EXTRACT_ISNULL 返回是否为 json null 的 BOOLEAN 类型 +* JSON_EXTRACT_BOOL 返回 BOOLEAN 类型 +* JSON_EXTRACT_INT 返回 INT 类型 +* JSON_EXTRACT_BIGINT 返回 BIGINT 类型 +* JSON_EXTRACT_LARGEINT 返回 LARGEINT 类型 +* JSON_EXTRACT_DOUBLE 返回 DOUBLE 类型 +* JSON_EXTRACT_STRING 返回 STRING 类型 +## 语法 ```sql -VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) -JSON jsonb_extract(JSON j, VARCHAR json_path) -BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) -BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) -INT json_extract_int(JSON j, VARCHAR json_path) -BIGINT json_extract_bigint(JSON j, VARCHAR json_path) -LARGEINT json_extract_largeint(JSON j, VARCHAR json_path) -DOUBLE json_extract_double(JSON j, VARCHAR json_path) -STRING json_extract_string(JSON j, VARCHAR json_path) +JSON_EXTRACT(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) Review Comment: ```suggestion JSON_EXTRACT( <json_str>, <json_path> [, ... ] ) ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-extract.md: ########## @@ -24,84 +24,108 @@ specific language governing permissions and limitations under the License. --> -## json_extract - ## 描述 -## 语法 +JSON_EXTRACT 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +* JSON_EXTRACT 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 +* JSONB_EXTRACT 返回 JSON 类型 +* JSON_EXTRACT_ISNULL 返回是否为 json null 的 BOOLEAN 类型 +* JSON_EXTRACT_BOOL 返回 BOOLEAN 类型 +* JSON_EXTRACT_INT 返回 INT 类型 +* JSON_EXTRACT_BIGINT 返回 BIGINT 类型 +* JSON_EXTRACT_LARGEINT 返回 LARGEINT 类型 +* JSON_EXTRACT_DOUBLE 返回 DOUBLE 类型 +* JSON_EXTRACT_STRING 返回 STRING 类型 +## 语法 ```sql -VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) -JSON jsonb_extract(JSON j, VARCHAR json_path) -BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) -BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) -INT json_extract_int(JSON j, VARCHAR json_path) -BIGINT json_extract_bigint(JSON j, VARCHAR json_path) -LARGEINT json_extract_largeint(JSON j, VARCHAR json_path) -DOUBLE json_extract_double(JSON j, VARCHAR json_path) -STRING json_extract_string(JSON j, VARCHAR json_path) +JSON_EXTRACT(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) +``` +```sql +JSONB_EXTRACT(JSON j, VARCHAR json_path) Review Comment: ```suggestion JSONB_EXTRACT(<json_str>, <json_path>) ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-extract.md: ########## @@ -24,84 +24,108 @@ specific language governing permissions and limitations under the License. --> -## json_extract - ## 描述 -## 语法 +JSON_EXTRACT 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +* JSON_EXTRACT 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 +* JSONB_EXTRACT 返回 JSON 类型 +* JSON_EXTRACT_ISNULL 返回是否为 json null 的 BOOLEAN 类型 +* JSON_EXTRACT_BOOL 返回 BOOLEAN 类型 +* JSON_EXTRACT_INT 返回 INT 类型 +* JSON_EXTRACT_BIGINT 返回 BIGINT 类型 +* JSON_EXTRACT_LARGEINT 返回 LARGEINT 类型 +* JSON_EXTRACT_DOUBLE 返回 DOUBLE 类型 +* JSON_EXTRACT_STRING 返回 STRING 类型 +## 语法 ```sql -VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) -JSON jsonb_extract(JSON j, VARCHAR json_path) -BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) -BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) -INT json_extract_int(JSON j, VARCHAR json_path) -BIGINT json_extract_bigint(JSON j, VARCHAR json_path) -LARGEINT json_extract_largeint(JSON j, VARCHAR json_path) -DOUBLE json_extract_double(JSON j, VARCHAR json_path) -STRING json_extract_string(JSON j, VARCHAR json_path) +JSON_EXTRACT(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) +``` +```sql +JSONB_EXTRACT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_ISNULL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BOOL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_INT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BIGINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_LARGEINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_DOUBLE(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_STRING(JSON j, VARCHAR json_path) ``` +## 参数 +| 参数 | 描述 | +|---------------|-----------------------------| +| `json j` | 要提取的 JSON 类型的参数或者字段 | Review Comment: ```suggestion | `<json_str>` | 要提取的 JSON 类型的参数或者字段 | ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-object.md: ########## @@ -24,47 +24,76 @@ specific language governing permissions and limitations under the License. --> -## json_object ## 描述 + +生成一个或者多个包含指定 Key-Value 对的 json object, 当 Key 值为 NULL 或者传入参数为奇数个时,返回异常错误。 + ## 语法 -`VARCHAR json_object(VARCHAR,...)` +```sql +JSON_OBJECT(key,value[,key,value...]) Review Comment: ```suggestion JSON_OBJECT(<key>, <value> [, <key>, <value>, ... ] ) ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-extract.md: ########## @@ -24,84 +24,108 @@ specific language governing permissions and limitations under the License. --> -## json_extract - ## 描述 -## 语法 +JSON_EXTRACT 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +* JSON_EXTRACT 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 +* JSONB_EXTRACT 返回 JSON 类型 +* JSON_EXTRACT_ISNULL 返回是否为 json null 的 BOOLEAN 类型 +* JSON_EXTRACT_BOOL 返回 BOOLEAN 类型 +* JSON_EXTRACT_INT 返回 INT 类型 +* JSON_EXTRACT_BIGINT 返回 BIGINT 类型 +* JSON_EXTRACT_LARGEINT 返回 LARGEINT 类型 +* JSON_EXTRACT_DOUBLE 返回 DOUBLE 类型 +* JSON_EXTRACT_STRING 返回 STRING 类型 +## 语法 ```sql -VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) -JSON jsonb_extract(JSON j, VARCHAR json_path) -BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) -BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) -INT json_extract_int(JSON j, VARCHAR json_path) -BIGINT json_extract_bigint(JSON j, VARCHAR json_path) -LARGEINT json_extract_largeint(JSON j, VARCHAR json_path) -DOUBLE json_extract_double(JSON j, VARCHAR json_path) -STRING json_extract_string(JSON j, VARCHAR json_path) +JSON_EXTRACT(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) +``` +```sql +JSONB_EXTRACT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_ISNULL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BOOL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_INT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BIGINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_LARGEINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_DOUBLE(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_STRING(JSON j, VARCHAR json_path) ``` +## 参数 +| 参数 | 描述 | +|---------------|-----------------------------| +| `json j` | 要提取的 JSON 类型的参数或者字段 | +| `json_path` | 要从目标 JSON 中提取目标元素的 JSON 路径。 | Review Comment: ```suggestion | `<json_path>` | 要从目标 JSON 中提取目标元素的 JSON 路径。 | ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/json-functions/json-extract.md: ########## @@ -24,84 +24,108 @@ specific language governing permissions and limitations under the License. --> -## json_extract - ## 描述 -## 语法 +JSON_EXTRACT 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +* JSON_EXTRACT 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 +* JSONB_EXTRACT 返回 JSON 类型 +* JSON_EXTRACT_ISNULL 返回是否为 json null 的 BOOLEAN 类型 +* JSON_EXTRACT_BOOL 返回 BOOLEAN 类型 +* JSON_EXTRACT_INT 返回 INT 类型 +* JSON_EXTRACT_BIGINT 返回 BIGINT 类型 +* JSON_EXTRACT_LARGEINT 返回 LARGEINT 类型 +* JSON_EXTRACT_DOUBLE 返回 DOUBLE 类型 +* JSON_EXTRACT_STRING 返回 STRING 类型 +## 语法 ```sql -VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) -JSON jsonb_extract(JSON j, VARCHAR json_path) -BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) -BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) -INT json_extract_int(JSON j, VARCHAR json_path) -BIGINT json_extract_bigint(JSON j, VARCHAR json_path) -LARGEINT json_extract_largeint(JSON j, VARCHAR json_path) -DOUBLE json_extract_double(JSON j, VARCHAR json_path) -STRING json_extract_string(JSON j, VARCHAR json_path) +JSON_EXTRACT(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) +``` +```sql +JSONB_EXTRACT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_ISNULL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BOOL(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_INT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_BIGINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_LARGEINT(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_DOUBLE(JSON j, VARCHAR json_path) +``` +```sql +JSON_EXTRACT_STRING(JSON j, VARCHAR json_path) ``` +## 参数 +| 参数 | 描述 | +|---------------|-----------------------------| +| `json j` | 要提取的 JSON 类型的参数或者字段 | +| `json_path` | 要从目标 JSON 中提取目标元素的 JSON 路径。 | +`json_path` 的语法如下 +* '$' 代表 json root +* '.k1' 代表 json object 中 key 为'k1'的元素 + - 如果 key 列值包含 ".", json_path 中需要用双引号,例如 SELECT json_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); +* '[i]' 代表 json array 中下标为 i 的元素 + - 获取 json_array 的最后一个元素可以用'$[last]',倒数第二个元素可以用'$[last-1]',以此类推。 -json_extract 是一系列函数,从 JSON 类型的数据中提取 json_path 指定的字段,根据要提取的字段类型不同提供不同的系列函数。 -- json_extract 对 VARCHAR 类型的 json string 返回 VARCHAR 类型 -- jsonb_extract 返回 JSON 类型 -- json_extract_isnull 返回是否为 json null 的 BOOLEAN 类型 -- json_extract_bool 返回 BOOLEAN 类型 -- json_extract_int 返回 INT 类型 -- json_extract_bigint 返回 BIGINT 类型 -- json_extract_largeint 返回 LARGEINT 类型 -- json_extract_double 返回 DOUBLE 类型 -- json_extract_STRING 返回 STRING 类型 - -json path 的语法如下 -- '$' 代表 json root -- '.k1' 代表 json object 中 key 为'k1'的元素 - - 如果 key 列值包含 ".", json_path 中需要用双引号,例如 SELECT json_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); -- '[i]' 代表 json array 中下标为 i 的元素 - - 获取 json_array 的最后一个元素可以用'$[last]',倒数第二个元素可以用'$[last-1]',以此类推 +## 返回值 +根据要提取的字段类型不同,返回目标 JSON 中 指定 JSON_PATH 的数据类型。特殊情况处理如下: +* 如果 json_path 指定的字段在 JSON 中不存在,返回 NULL +* 如果 json_path 指定的字段在 JSON 中的实际类型和 json_extract_t 指定的类型不一致,如果能无损转换成指定类型返回指定类型 t,如果不能则返回 NULL -特殊情况处理如下: -- 如果 json_path 指定的字段在 JSON 中不存在,返回 NULL -- 如果 json_path 指定的字段在 JSON 中的实际类型和 json_extract_t 指定的类型不一致,如果能无损转换成指定类型返回指定类型 t,如果不能则返回 NULL -## 举例 +## 示例 -参考 [json tutorial](../../sql-reference/Data-Types/JSON.md) 中的示例 +参考 [json tutorial](../../../sql-data-types/semi-structured/JSON.md) 中的示例 Review Comment: 这句去掉吧,data type 这一章节马上就要改版了,之后里面应该没有示例了 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org