MySQL:有没有一种简单的方法可以将 UUID 转换为整数?

标签 mysql uuid

我需要将数据从系统 A 传输到系统 B。系统 A 存储用户 ID 是 UUID,系统 B 将它们存储为整数。

我正在使用 MySQL select 语句从系统 A 检索和保存数据,然后将其传输到系统 B。有没有一种简单的方法可以在 MySQL select 语句中将 UUID 转换为整数?

最佳答案

如评论中所述,您不能简单地将 UUID 转换为整数并期望它是唯一的。 UUID 是 128 位,而 INT(10) 可能是 32 位。这意味着您必须忽略 96 位,这相当于非常大量的潜在冲突(每个唯一的 32 位值大约有 78 个不同的 UUID)。

并非全部丢失,因为在 32 位中,您最多可以代表大约 40 亿用户,这可能就足够了。您真正需要做的就是将您现有的 UUID 映射到一个整数,这实际上非常简单。

为了实现这一点,您可以创建一个转换表来存储 UUID(作为主键)和一个唯一的整数(可能是一个自增字段)。您可以使用它从系统 A 映射到系统 B(并且反之亦然)。您可以将此表放入两个数据库中的任何一个,也可以将其分开。就我个人而言,我会将其放入系统 B,因为这是 userId 整数值真正有意义的地方。

关于MySQL:有没有一种简单的方法可以将 UUID 转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906280/

相关文章:

iphone - 无需 iTunes 即可获取 UUID

go - 无法在谷歌数据存储中存储字节数组

mysql - 如何通过触发器提取插入行中的uuid作为主键

postgresql - 在 PostgreSQL 中从 v1 UUID 转换或提取时间戳

php - 我的登录 PHP 脚本出现故障

android - 在 Android 2.0 中查找 UUID

mysql - ServiceStack.OrmLite : Implementing custom StringConverter affects column type of complex BLOB fields

python - PyMySQL 连接查询为空

php - 在 Yii 上出现 SQLSTATE[HY000] : General error: 2014 Cannot execute queries while other unbuffered queries are active 之类的错误

mysql - 为什么 MySQL 允许将 NOT NULL 列更新为 NULL?