我有一个SQL Server的查询,我想在Mysql中运行。但我找不到uniqueidentifier
关键字从SQL Server脚本到MYSQL脚本的替换。
这是查询
CREATE TABLE foo(
myid uniqueidentifier NOT NULL,
barid uniqueidentifier NOT NULL
)
对于上面相同的SQL Server脚本,Mysql中的查询是什么?
答案 0 :(得分:18)
接受的答案虽然不完全错误,但有点不完整。肯定有更多节省空间的方法来存储GUID / UUID。请看一下这个问题:"Storing MySQL GUID/UUIDs"
这是我将UUID()生成的MySQL GUID / UUID转换为二进制(16)的最佳方法:
UNHEX(REPLACE(UUID(),'-',''))
然后将其存储在BINARY(16)
中
如果GUID / UUID的存储空间是主要关注点,则此方法可以节省大量成本。
答案 1 :(得分:15)
CREATE TABLE FOO (
myid CHAR(38) NOT NULL,
barid CHAR(38) NOT NULL
);
根据MS网站的说法,GUID的长度为38个字符。
答案 2 :(得分:3)
根据MySQL网站,您应该将其与VARCHAR(64)
相匹配UNIQUEIDENTIFIER, VARCHAR(64)
http://dev.mysql.com/doc/workbench/en/wb-migration-database-mssql-typemapping.html
答案 3 :(得分:1)
还要记住16字节值以十六进制表示为32字节。使用4个破折号和2个花括号,可以获得这种格式的38个字节与SQL Server兼容,并带有38个字节的字符串。例如:{2DCBF868-56D7-4BED-B0F8-84555B4AD691}。