gpt4 book ai didi

sql-server - 带有 Golang SQL 驱动程序和 UUID 的 MS SQL 唯一标识符

转载 作者:IT王子 更新时间:2023-10-29 00:53:44 27 4
gpt4 key购买 nike

我正在使用 Go 1.6.2 连接到 SQL-Server 数据库。我将 go-mssqldb 驱动程序 (github.com/denisenkom/go-mssqldb) 与 sql 包一起使用。

我的问题是我正在使用 github.com/twinj/uuid 包创建 uuid(我也尝试了其他一些)并且它们正确插入但是当我尝试扫描它们时

err := Database.QueryRow("SELECT Id FROM ...").Scan(&struct.Id)

它返回前半部分翻转的 Id。我在这篇 SO 帖子 ( https://dba.stackexchange.com/questions/121869/sql-server-uniqueidentifier-guid-internal-representation) 和其他一些文章/帖子中找到了解释。

但是,我一直无法找到在 Go 中解决此问题的具体方法。我无法改变 SQL 服务器存储 guid 的方式。我是否遗漏了 UUID 扫描实现的某些内容?我还没有看到改变它阅读方式的方法。我的最后一个选择是编写我自己的实现来交换这些位,但想联系我看看我是否遗漏了驱动程序或 UUID 包或其他一些库。

最佳答案

将 Id 转换(或转换)为 char 以预期的字节顺序返回 Id:

"SELECT cast(Id as char(36)) FROM ..."

请注意转换为二进制给出的结果与直接查询 Id 的结果相同。

0F F1 4D 44 F4 72 49 59 9F C8 18 C2 DB 26 3C 3C  As inserted

44 4D F1 0F 72 F4 59 49 9F C8 18 C2 DB 26 3C 3C Id (no cast)
44 4D F1 0F 72 F4 59 49 9F C8 18 C2 DB 26 3C 3C cast(Id as binary(16))
0F F1 4D 44 F4 72 49 59 9F C8 18 C2 DB 26 3C 3C cast(Id as char(36))

关于sql-server - 带有 Golang SQL 驱动程序和 UUID 的 MS SQL 唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38160945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com