可以在“UUID()”上设置长度吗?

时间:2014-08-12 13:04:18

标签: php mysql uuid

我用来生成独特的&随机字符串mysql函数UUID(),可以设置这个生成的字符串的长度吗?我只需要8个字母。

这个插入我用php插入函数...

提前谢谢。

5 个答案:

答案 0 :(得分:3)

UUID无法像其他人所提到的那样,因为它具有standard指定的已定义模式。但是,您可以在PHP中使用此功能,这将为您创建字母和数字的唯一ID

<?php
function generateUUID($length) {
  $random = '';
  for ($i = 0; $i < $length; $i++) {
    $random .= rand(0, 1) ? rand(0, 9) : chr(rand(ord('a'), ord('z')));
  }
  return $random;
}

答案 1 :(得分:2)

来自MySQL manual

  

UUID是一个128位数字,由aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee格式的五个十六进制数字的utf8字符串表示

所以,不 - 你不能指定UUID长度,因为它已经定义了格式。您唯一能做的就是对UUID函数返回的值进行子串。

答案 2 :(得分:0)

这是不可能的。

另一种方法是使用PHP生成您的唯一编号。

答案 3 :(得分:0)

UUID是标准实施:

  

返回根据生成的通用唯一标识符(UUID)   “DCE 1.1:远程过程调用”(附录A)CAE(通用应用程序   环境)The Open Group于10月发布的规范   1997年(文件号C706,   http://www.opengroup.org/public/pubs/catalog/c706.htm)。

也许你可以使用像rand这样的功能。随机创造一些东西。或者使用php生成8个字符。请查看此主题:Generate random string from 4 to 8 characters in PHP

http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

答案 4 :(得分:0)

怎么样

SELECT LEFT(UUID(), 8) FROM dual

添加Cas Wolters的评论:

  

简单地获取前8个字符会大大降低字符串的唯一性