Mysql中uniqueidentifier的替代品是什么

Mysql中uniqueidentifier的替代品是什么,mysql,sql-server,uniqueidentifier,Mysql,Sql Server,Uniqueidentifier,我有一个来自SQL Server的查询,我想在Mysql中运行它。但是我找不到从SQL Server脚本到MYSQL脚本的uniqueidentifier关键字的任何替换项 这是一个问题 CREATE TABLE foo( myid uniqueidentifier NOT NULL, barid uniqueidentifier NOT NULL ) 对于上述相同的SQL Server脚本,Mysql中的查询将是什么 CREATE TABLE FOO ( myid CHAR(38)

我有一个来自SQL Server的查询,我想在Mysql中运行它。但是我找不到从SQL Server脚本到MYSQL脚本的
uniqueidentifier
关键字的任何替换项

这是一个问题

 CREATE TABLE foo(
  myid uniqueidentifier NOT NULL,
  barid uniqueidentifier NOT NULL
)
对于上述相同的SQL Server脚本,Mysql中的查询将是什么

CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);

据微软网站称,GUID的长度为38个字符。

公认的答案虽然不是完全错误,但有点不完整。当然有更节省空间的方法来存储GUID/UUID。请看一下这个问题:

这是将UUID()生成的MySQL GUID/UUID转换为二进制文件(16)的最佳方法:

然后将其存储在二进制文件中(16)


如果GUID/UUID的存储空间是一个主要问题,那么这种方法将带来显著的节约。

根据MySQL网站,您应该将其与VARCHAR(64)相匹配


还要记住,16字节的值用十六进制表示为32字节。通过4个破折号和2个大括号,我们可以得到与SQL Server兼容的38字节格式的38字节字符串。例如:{2DCBF868-56D7-4BED-B0F8-84555B4AD691}。

UUID呢?这是相同的,还是我们需要使用UUID函数来实现这一点?
UUID
是一个MySQL函数,它返回GUID-它不做任何存储操作。指定
myid CHAR(38)NOT NULL
是一条语句,它创建一个名为
myid
的列,其类型为
CHAR
,长度正好是38个字符。由于GUID有效地表示为38字节的字符串,因此需要将其存储为38字节的字符串。这就是MySQL中没有“快捷方式”的原因,您需要显式设置列数据类型,然后可以调用内部函数,这些函数的结果存储在新创建的表中。明白了。。非常感谢你。。ROWGUIDCOL是否也以同样的方式工作?如果ROWGUIDCOL存储了任何与GUID相关的内容,这意味着它肯定会被表示为一个字符串,所以-是的,在MySQL中,您可以将其保存为CHAR(或者VARCHAR,如果长度是可变的)。非常感谢。。非常感谢你的帮助
UNHEX(REPLACE(UUID(),'-',''))
UNIQUEIDENTIFIER,   VARCHAR(64)