我正在使用Go 1.6.2连接到SQL-Server DB。 我正在使用go-mssqldb驱动程序(github.com/denisenkom/go-mssqldb)与sql包配合使用。
我的问题是,我正在使用github.com/twinj/uuid软件包创建uuids(我也尝试了其他一些),它们可以正确插入,但在尝试将它们扫描出来时出现问题。
它返回翻转了前半部分的Id。我在这个SO帖子(https://dba.stackexchange.com/questions/121869/sql-server-uniqueidentifier-guid-internal-representation)和其他一些文章/帖子中找到了解释。
然而,我无法找到任何特定于Go解决此问题的内容。我无法改变SQL Server存储guids的方式。UUID扫描实现有什么我错过的东西吗?我还没有看到改变读取方式的方法。我的最后选择将是编写自己的实现来交换位,但想知道是否有遗漏驱动程序、UUID包或其他库的可能性。
我的问题是,我正在使用github.com/twinj/uuid软件包创建uuids(我也尝试了其他一些),它们可以正确插入,但在尝试将它们扫描出来时出现问题。
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 Server存储guids的方式。UUID扫描实现有什么我错过的东西吗?我还没有看到改变读取方式的方法。我的最后选择将是编写自己的实现来交换位,但想知道是否有遗漏驱动程序、UUID包或其他库的可能性。
convert(char(36), Id)
或cast(Id as char(36))
数据类型转换。 - Markcast(Id as binary(16))
吗?这样可能更有效率。它也会给出正确的 UUID 吗? - Mark