---
title: "RANDSTR - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: RANDSTR 声明 RANDSTR(N, gen) 说明 该函数按照指定长度生成一个随机字符串，字符串中的字符包含 A-Z 、 a-z 和 0-9 。 N 为生成的随机字符串长度： 当 N &lt; 0 时，返回 NULL 。 当 N = 0 时，返回空字符串。 当 N &gt; 0 并且 N &lt;= max_allowed_p…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# RANDSTR

更新时间：2026-01-24 10:20:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/200.single-row-functions-of-mysql-mode/400.mathematical-functions-of-mysql-mode/2900.randstr-of-mysql-mode.md)  

## 声明

```sql
RANDSTR(N, gen)

```

## 说明

该函数按照指定长度生成一个随机字符串，字符串中的字符包含 `A-Z`、`a-z` 和 `0-9`。

- `N` 为生成的随机字符串长度：

     - 当 `N < 0` 时，返回 `NULL`。
     - 当 `N = 0` 时，返回空字符串。
     - 当 `N > 0` 并且 `N <= max_allowed_packet` 时，返回长度为 N 的随机字符串。
     - 当 `N > max_allowed_packet` 时，返回 `NULL`。其中 `max_allowed_packet` 为系统变量，默认值为 16777216。
 - `gen` 为分布函数，可取值如下：

     - 常量，则每次调用 `RANDSTR()` 都会生成相同的随机串。
     - 返回整数值的随机函数，例如 `RANDOM()`。
     - 分布函数，例如均匀分布、zipf 分布、高斯分布等。
 - 随机串的生成算法：采用 LCG 算法生成 N 个随机值，据此选出 N 个字符组成随机串。所以当 N 很大时会消耗较多 CPU。例如下面生成了一个长度为 300 M 的随机串，耗时 1.7 秒。

  ```shell
  obclient> SELECT LENGTH(RANDSTR(300000000, 1)) FROM DUAL;;
  +------------------------------+
  | LENGTH(RANDSTR(300000000,1)) |
  +------------------------------+
  |                    300000000 |
  +------------------------------+
  1 row in set (1.73 sec)

  ```

## 示例

如下示例为通过 `RANDSTR()` 函数生成长度为 10 的随机字符串。

```shell
obclient> SELECT RANDSTR(10, RANDOM()) FROM TABLE(GENERATOR(7));
+-----------------------+
| RANDSTR(10, RANDOM()) |
+-----------------------+
| TGfdBAZ1BP            |
| VvMbD2bChR            |
| VNSB6MpgQw            |
| 3QWYQYQVJ4            |
| CpyE58jM0o            |
| vBvsJBGGmX            |
| rg3Pkde0UJ            |
+-----------------------+
7 rows in set

```

`RANDSTR()` 通过 `gen` 参数可以控制生成的随机字符串的频率。如下示例中，生成 1000 个长度为 1 的字符串，它们的分布符合 zipf 分布规律。

```shell
obclient> SELECT RANDSTR(1, ZIPF(1, 10, RANDOM())) s, COUNT(*) FROM TABLE(GENERATOR(1000)) GROUP BY s ORDER BY 1 ASC;
+------+----------+
| s    | COUNT(*) |
+------+----------+
| 0    |       27 |
| 1    |       41 |
| 4    |       32 |
| 5    |       54 |
| 8    |       64 |
| 9    |       69 |
| C    |       88 |
| D    |      125 |
| G    |      168 |
| H    |      332 |
+------+----------+
10 rows in set

```

`RANDSTR()` 函数通过控制 `N` 参数的大小，可以生成长度不同的字符串，如下例所示。

```shell
obclient> SELECT RANDSTR(5, 40) FROM DUAL;
+----------------+
| RANDSTR(5, 40) |
+----------------+
| UU3g0          |
+----------------+
1 row in set

obclient> SELECT RANDSTR(1, 40) FROM DUAL;
+----------------+
| RANDSTR(1, 40) |
+----------------+
| U              |
+----------------+
1 row in set

obclient> SELECT RANDSTR(0, 40) FROM DUAL;
+----------------+
| RANDSTR(0, 40) |
+----------------+
|                |
+----------------+
1 row in set

obclient> SELECT RANDSTR(-1, 40) FROM DUAL;
+-----------------+
| RANDSTR(-1, 40) |
+-----------------+
| NULL            |
+-----------------+
1 row in set

```

当 `gen` 为常量时，反复执行 `RANDSTR()` 函数，会生成相同的随机字符串，如下例所示。

```shell
obclient> SELECT RANDSTR(10, 1442) FROM TABLE(GENERATOR(7));
+-------------------+
| RANDSTR(10, 1442) |
+-------------------+
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
+-------------------+
7 rows in set

obclient> SELECT RANDSTR(10, 1442) FROM TABLE(GENERATOR(7));
+-------------------+
| RANDSTR(10, 1442) |
+-------------------+
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
| 4dTm5bOtGc        |
+-------------------+
7 rows in set

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
