sql - 如何从整数值创建确定性唯一标识符 (GUID)

标签 sql sql-server guid

注意:这与数据库设计无关,也与 GUID 的一般使用无关。这是关于在 Microsoft SQL 服务器上确定性地为测试数据创建此类 GUID。

我们正在将我们的数据库从整数标识符迁移到 uniqueidentifier 数据类型。

出于测试目的,我们希望将我们的测试数据集迁移到已知的 GUID 值,确定性地基于我们以前的整数值

UPDATE Unit
SET UnitGuid = NEWID(UnitId)

显然这不会立即起作用。 如何使用 UnitId 创建确定性 GUID?

最佳答案

您可以创建键映射表:

CREATE TABLE tab_map(id_old INT PRIMARY KEY, guid UNIQUEIDENTIFIER);

INSERT INTO tab_map(id_old, guid)
SELECT id, NEWID()
FROM src_table;

DBFiddle Demo

之后你可以使用简单的查询或者用一个函数包装:

SELECT guid
FROM tab_map
WHERE id_old = ?

关于sql - 如何从整数值创建确定性唯一标识符 (GUID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52061092/

相关文章:

mysql - 非常慢的 mysql 查询 : left join multiple table and where clause for each table

Mysql列作为sql server中的vColumn语法

c# - Binary(16) 字段正在截断 Guid 的尾随零

SQL Server 加入顺序

mysql - WSO2 API Manager 对 Store rest API 的 SQL 查询速度慢,导致 UI 性能不佳

sql - 循环遍历 Oracle 中的显式游标

sql-server - SSIS 表达式生成器的转义字符是什么?

sql - 将数据从 SQL 导出到 XML - NULL 值

.net - 如何在某些文本中找到所有 Guid?

c# - 创建唯一标识符,它是父标识符的可识别子标识符