在 MySQL 中生成随机且唯一的字符串

Mehvish Ashiq 2023年1月30日 2022年5月31日
  1. 在 MySQL 中使用 MD5()RAND()SUBSTR() 生成随机且唯一的字符串
  2. 使用 UUID() 在 MySQL 中生成随机且唯一的字符串
在 MySQL 中生成随机且唯一的字符串

今天,我们将学习在 MySQL 中使用各种函数来生成随机且唯一的字符串。这些函数包括 MD5()RAND()SUBSTR()UUID()

在 MySQL 中没有内置的方法来生成随机字符串,但是有很多其他的方法可以让我们获得优势来满足要求。在这里,我们将了解在 MySQL 中生成随机和唯一字符串的最简单和最有效的方法。

在 MySQL 中使用 MD5()RAND()SUBSTR() 生成随机且唯一的字符串

示例代码:

SELECT SUBSTR(MD5(RAND()),1,8) AS RandomString;

输出:

+--------------+
| RandomString |
+--------------+
| 7d192f5f     |
+--------------+
1 row in set (0.00 sec)

MD5() 函数生成参数的 128 位校验和表示。在上面的例子中,RAND() 函数生成的值是 MD5() 函数的参数; RAND() 函数产生随机值。

但是,校验和结果是从传递给 MD5() 函数的参数生成的 32 个字母数字字符。此外,我们使用 SUBSTR() 根据我们项目的要求提取 MD5 字符串的一部分。

SUBSTR() 采用三个参数:字符串、提取的开始位置和长度。在上面的示例代码中,我们从第一个字符开始,从 MD5 字符串中提取了 8 个字符串。

使用 UUID() 在 MySQL 中生成随机且唯一的字符串

示例代码:

SELECT LEFT(UUID(), 8)

输出:

+-----------------+
| LEFT(UUID(), 8) |
+-----------------+
| 4a1f35bc        |
+-----------------+
1 row in set (0.00 sec)

在 MySQL 中生成 8 个字符的字符串的另一种方法是 LEFT(UUID(),8),如上所述。RFC 4122(通用唯一标识符 URN 命名空间)指定了 UUID()(通用唯一标识符),它是一个 128 位长值。

它根据时间和空间生成一个全局唯一的值。由于 UUID() 产生的值是唯一的,因此它们是不可预测或不可猜测的。

这意味着 UUID() 总是生成一个随机值。我们可以使用以下查询来获取 8 或 10 个字符长的字符串。

示例代码:

-- for 8 characters long string
SELECT LEFT(UUID(),8) random_string ;
-- for 10 characters long string
SELECT RIGHT(UUID(),10) random_string ;

请记住,UUID() 输出一个十六进制值,该值由由连字符分隔的五个部分组成。因此,我们可以获得一个包含数字、连字符和字母的字符串,具体取决于所需的字符串长度。

示例代码:

SELECT UUID(),  LEFT(UUID(), 8), right(uuid(),20);

输出:

+--------------------------------------+-----------------+----------------------+
| UUID()                               | LEFT(UUID(), 8) | right(uuid(),20)     |
+--------------------------------------+-----------------+----------------------+
| b3e73af1-d811-11ec-b138-d8d09042fdaa | b3e73b03        | ec-b138-d8d09042fdaa |
+--------------------------------------+-----------------+----------------------+
1 row in set (0.00 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相关文章 - MySQL String