在 MySQL 中生成随机且唯一的字符串
Mehvish Ashiq
2023年1月30日
今天,我们将学习在 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