Skip to content

Commit

Permalink
string-functions: add instructions for using CONCAT() and CONCAT_WS() (
Browse files Browse the repository at this point in the history
  • Loading branch information
Weaxs authored Jan 29, 2024
1 parent 38cc546 commit 520c80b
Showing 1 changed file with 175 additions and 2 deletions.
177 changes: 175 additions & 2 deletions functions-and-operators/string-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,184 @@ SELECT BIN(-7);

### [`CONCAT()`](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_concat)

返回连接的字符串
`CONCAT()` 函数用于将输入的参数连接成一个字符串。

语法:

```sql
CONCAT(str1,str2,...)
```

`str1, str2, ...` 为要连接的参数。该参数可以是字符串或数字。

查询示例:

```sql
SELECT CONCAT('TiDB', ' ', 'Server', '-', 1, TRUE);
```

返回结果:

```sql
+---------------------------------------------+
| CONCAT('TiDB', ' ', 'Server', '-', 1, TRUE) |
+---------------------------------------------+
| TiDB Server-11 |
+---------------------------------------------+
```

如果任一参数的值为 `NULL`, 则 `CONCAT()` 返回 `NULL`

查询示例:

```sql
SELECT CONCAT('TiDB', NULL, 'Server');
```

返回结果:

```sql
+--------------------------------+
| CONCAT('TiDB', NULL, 'Server') |
+--------------------------------+
| NULL |
+--------------------------------+
```

除了使用 `CONCAT()` 函数外,你也可以通过字符串彼此相邻的方式获取拼接字符串,但是该方式不支持数字类型。例如:

```sql
SELECT 'Ti' 'DB' ' ' 'Server';
```

返回结果:

```sql
+-------------+
| Ti |
+-------------+
| TiDB Server |
+-------------+
```

### [`CONCAT_WS()`](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_concat-ws)

返回由分隔符连接的字符串
`CONCAT_WS()` 函数是一种带分隔符的 [`CONCAT()`](#concat),返回由分隔符连接的字符串。

语法:

```sql
CONCAT_WS(separator,str1,str2,...)
```

- `separator`:第一个参数为分隔符,用于连接其余的不为 `NULL` 的参数。
- `str1, str2, ...`:要连接的参数。该参数可以为字符串或数字。

查询示例:

```sql
SELECT CONCAT_WS(',', 'TiDB Server', 'TiKV', 'PD');
```

返回结果:

```sql
+---------------------------------------------+
| CONCAT_WS(',', 'TiDB Server', 'TiKV', 'PD') |
+---------------------------------------------+
| TiDB Server,TiKV,PD |
+---------------------------------------------+
```

- 如果分隔符为空,则 `CONCAT_WS()` 等效于 `CONCAT()`,返回其余参数连接后的字符串。

查询示例:

```sql
SELECT CONCAT_WS('', 'TiDB Server', 'TiKV', 'PD');
```

返回结果:

```sql
+--------------------------------------------+
| CONCAT_WS('', 'TiDB Server', 'TiKV', 'PD') |
+--------------------------------------------+
| TiDB ServerTiKVPD |
+--------------------------------------------+
```

- 如果分隔符为 `NULL`,则 `CONCAT_WS()`返回 `NULL`

查询示例:

```sql
SELECT CONCAT_WS(NULL, 'TiDB Server', 'TiKV', 'PD');
```

返回结果:

```sql
+----------------------------------------------+
| CONCAT_WS(NULL, 'TiDB Server', 'TiKV', 'PD') |
+----------------------------------------------+
| NULL |
+----------------------------------------------+
```

- 如果用于连接的参数中只有一个不为 `NULL`,则 `CONCAT_WS()` 返回此参数。

查询示例:

```sql
SELECT CONCAT_WS(',', 'TiDB Server', NULL);
```

返回结果:

```sql
+-------------------------------------+
| CONCAT_WS(',', 'TiDB Server', NULL) |
+-------------------------------------+
| TiDB Server |
+-------------------------------------+
```

- 如果用于连接的参数中有 `NULL``CONCAT_WS()`会忽略 `NULL`

查询示例:

```sql
SELECT CONCAT_WS(',', 'TiDB Server', NULL, 'PD');
```

返回结果:

```sql
+-------------------------------------------+
| CONCAT_WS(',', 'TiDB Server', NULL, 'PD') |
+-------------------------------------------+
| TiDB Server,PD |
+-------------------------------------------+
```

- 如果用于连接的参数中有空字符串,`CONCAT_WS()` 不会忽略该字符串。

查询示例:

```sql
SELECT CONCAT_WS(',', 'TiDB Server', '', 'PD');
```

返回结果:

```sql
+-----------------------------------------+
| CONCAT_WS(',', 'TiDB Server', '', 'PD') |
+-----------------------------------------+
| TiDB Server,,PD |
+-----------------------------------------+
```

### [`ELT()`](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_elt)

Expand Down

0 comments on commit 520c80b

Please sign in to comment.