繁体   English   中英

MYSQL-将现有的Varchar列GUID值更新为二进制

[英]MYSQL-Update Existing Varchar column GUID values to Binary

我有一个MYSQL数据库,其GUID(或UUID)存储为Varchar(36)。 为了提高性能,我想将它们转换为Binary(16)。 对于新值,我可以使用类似

插入某些表(SOMECOLUMN,UUID)值(“ Something”,UNHEX([-uuid]))

但是,如何将现有存储的GUID值更新为Binary(16)?

我自己得到了答案。

万一其他人需要它。 这里是

将GUID列的类型更改为VARBINARY以避免右填充。

ALTER TABLE newtable修改列id VARBINARY(36)非空;

将现有的ID数据更新为BINARY ID

UPDATE newtable set id = UNHEX(REPLACE(id,'-',''));

现在将列数据类型更改为BINARY(16)

ALTER TABLE newtable MODIFY COLUMN id BINARY(16)非空;

  1. 创建一个新列:

     ALTER TABLE sometable ADD newColumn BINARY(16) AFTER UUID; 
  2. 更新表:

     UPDATE sometable SET newColumn = UNHEX(UUID); 
  3. 删除旧列并重命名新列(如果需要,通常最好不要重命名,这样未更新的应用程序代码将失败,而不是错误地使用该表):

     ALTER TABLE sometable DROP UUID, CHANGE newColumn UUID BINARY(16); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM