在 MySQL 中生成随机且唯一的字符串
Mehvish Ashiq
2023年1月30日
MySQL
MySQL String
今天,我们将学习在 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)
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Mehvish Ashiq
