Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions docs/en/sql-reference/sql-functions/json-functions/is_json_scalar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
displayed_sidebar: docs
---

# `is_json_scalar`

Returns whether a JSON value is a scalar (not an object or array).

## Aliases
None

## Syntax

```Haskell
BOOLEAN is_json_scalar(JSON)
```

### Parameters

`json` : A value of JSON type. The function examines the parsed JSON value and determines if it is a scalar. Valid JSON scalar types include number, string, boolean, and JSON null. If the input is SQL NULL (or the JSON column value is NULL), the function returns SQL NULL.

## Return value

Returns a BOOLEAN:
- TRUE (1) if the JSON value is a scalar (number, string, boolean, or JSON null).
- FALSE (0) if the JSON value is a non-scalar (an object or an array).
- NULL if the input is SQL NULL.

## Usage notes

- The function operates on values of JSON type. Pass JSON expressions or CAST string literals to JSON: e.g., CAST('{"a": 1}' AS JSON).
- JSON null (the literal JSON value null) is considered a scalar by this function because it is not an object or array.
- SQL NULL (absence of a value) is distinct from JSON null; SQL NULL yields a NULL result.
- The function only inspects the top-level JSON value: object and array are non-scalar regardless of their contents.
- This function is implemented as JsonFunctions::is_json_scalar, which checks that the underlying VPack slice is not an object and not an array.

## Examples

```SQL
SELECT is_json_scalar(CAST('{"a": 1}' AS JSON));
+----------------------------------------------+
| is_json_scalar(CAST('{"a": 1}' AS JSON)) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('[1, 2, 3]' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('[1, 2, 3]' AS JSON)) |
+-----------------------------------------+
| 0 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('"hello"' AS JSON));
+-------------------------------------------+
| is_json_scalar(CAST('"hello"' AS JSON)) |
+-------------------------------------------+
| 1 |
+-------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('123' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('123' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('true' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('true' AS JSON)) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('null' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('null' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST(NULL AS JSON));
+------------------------------+
| is_json_scalar(CAST(NULL AS JSON)) |
+------------------------------+
| NULL |
+------------------------------+
```
100 changes: 100 additions & 0 deletions docs/ja/sql-reference/sql-functions/json-functions/is_json_scalar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
displayed_sidebar: docs
---

# `is_json_scalar`

Returns whether a JSON value is a scalar (not an object or array).

## 別名
なし

## 構文

```Haskell
BOOLEAN is_json_scalar(JSON)
```

### パラメーター

`json` : JSON 型の値。関数は解析済みの JSON 値を調べ、それがスカラーかどうかを判定します。有効な JSON スカラー型には number、string、boolean、および JSON null が含まれます。入力が SQL NULL(または JSON 列の値が NULL)の場合、関数は SQL NULL を返します。

## 戻り値

BOOLEAN を返します:
- TRUE (1) — JSON 値がスカラー(number、string、boolean、または JSON null)の場合。
- FALSE (0) — JSON 値が非スカラー(オブジェクトまたは配列)の場合。
- NULL — 入力が SQL NULL の場合。

## 使用上の注意

- この関数は JSON 型の値に対して動作します。JSON 式を渡すか、文字列リテラルを JSON に CAST してください。例: CAST('{"a": 1}' AS JSON)。
- JSON null(リテラルの JSON 値 null)は、オブジェクトや配列ではないため、この関数ではスカラーと見なされます。
- SQL NULL(値の欠如)は JSON null とは別物です。SQL NULL の入力に対しては NULL が返ります。
- この関数はトップレベルの JSON 値のみを検査します。オブジェクトと配列は、その中身に関係なく非スカラーと見なされます。
- この関数は JsonFunctions::is_json_scalar として実装されており、基になる VPack スライスがオブジェクトでも配列でもないことをチェックします。

## 例

```SQL
SELECT is_json_scalar(CAST('{"a": 1}' AS JSON));
+----------------------------------------------+
| is_json_scalar(CAST('{"a": 1}' AS JSON)) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('[1, 2, 3]' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('[1, 2, 3]' AS JSON)) |
+-----------------------------------------+
| 0 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('"hello"' AS JSON));
+-------------------------------------------+
| is_json_scalar(CAST('"hello"' AS JSON)) |
+-------------------------------------------+
| 1 |
+-------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('123' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('123' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('true' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('true' AS JSON)) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('null' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('null' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST(NULL AS JSON));
+------------------------------+
| is_json_scalar(CAST(NULL AS JSON)) |
+------------------------------+
| NULL |
+------------------------------+
```
100 changes: 100 additions & 0 deletions docs/zh/sql-reference/sql-functions/json-functions/is_json_scalar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
displayed_sidebar: docs
---

# `is_json_scalar`

返回 JSON 值是否为标量(不是对象或数组)。

## 别名

## 语法

```Haskell
BOOLEAN is_json_scalar(JSON)
```

### 参数

`json` : JSON 类型的值。该函数检查解析后的 JSON 值并确定其是否为标量。有效的 JSON 标量类型包括 number、string、boolean 和 JSON null。如果输入为 SQL NULL(或 JSON 列值为 NULL),函数返回 SQL NULL。

## 返回值

返回一个 BOOLEAN:
- TRUE (1) 如果 JSON 值是标量(number、string、boolean 或 JSON null)。
- FALSE (0) 如果 JSON 值是非标量(对象或数组)。
- NULL 如果输入为 SQL NULL。

## 使用说明

- 该函数对 JSON 类型的值进行操作。传入 JSON 表达式或将字符串字面量 CAST 为 JSON,例如:CAST('{"a": 1}' AS JSON)。
- JSON null(字面量 JSON 值 null)被此函数视为标量,因为它不是对象或数组。
- SQL NULL(值的缺失)不同于 JSON null;SQL NULL 会导致函数返回 NULL。
- 该函数仅检查顶层 JSON 值:无论其内容如何,对象和数组均被视为非标量。
- 此函数的实现为 JsonFunctions::is_json_scalar,它检查底层的 VPack slice 不是对象且不是数组。

## 示例

```SQL
SELECT is_json_scalar(CAST('{"a": 1}' AS JSON));
+----------------------------------------------+
| is_json_scalar(CAST('{"a": 1}' AS JSON)) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('[1, 2, 3]' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('[1, 2, 3]' AS JSON)) |
+-----------------------------------------+
| 0 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('"hello"' AS JSON));
+-------------------------------------------+
| is_json_scalar(CAST('"hello"' AS JSON)) |
+-------------------------------------------+
| 1 |
+-------------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('123' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('123' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('true' AS JSON));
+-----------------------------------------+
| is_json_scalar(CAST('true' AS JSON)) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST('null' AS JSON));
+----------------------------------------+
| is_json_scalar(CAST('null' AS JSON)) |
+----------------------------------------+
| 1 |
+----------------------------------------+
```

```SQL
SELECT is_json_scalar(CAST(NULL AS JSON));
+------------------------------+
| is_json_scalar(CAST(NULL AS JSON)) |
+------------------------------+
| NULL |
+------------------------------+
```
Loading