【发布时间】:2016-11-04 18:47:07
【问题描述】:
我正在使用 Go 1.6.2 连接到 SQL-Server 数据库。我正在使用带有 sql 包的 go-mssqldb 驱动程序 (github.com/denisenkom/go-mssqldb)。
我的问题是我正在使用 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 包或其他一些库的内容。
【问题讨论】:
-
您能否更改您的查询以使用“SELECT convert(Id as varchar(36)) FROM ...”?
-
@mark 我会试一试告诉你!
-
对不起,更正:
convert(char(36), Id)或cast(Id as char(36))data type conversions -
@mark 如果您将其添加为答案,我会将其标记为已回答。
-
太棒了!请你试试
cast(Id as binary(16))。它可能更有效。它是否也给出了正确的 uuid?
标签: sql-server go guid uuid