【问题标题】:It's possible to set length on "UUID()"?可以在“UUID()”上设置长度吗?
【发布时间】:2014-10-05 13:36:03
【问题描述】:

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

这个插入是我用php插入函数做的...

提前谢谢你。

【问题讨论】:

    标签: php mysql uuid


    【解决方案1】:

    正如其他人提到的那样,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;
    }
    

    【讨论】:

    • ... 将创建一个可能唯一的ID。实际上它只是生成一个大致随机的字符串,通常会非常独特 - 它只是不适合。称它为 UUID 是用词不当。
    • @barryhunter:- 确实这就是为什么我在我的答案中写了which will create the unique ids 或者是唯一的 id 误导?
    • 是的,那是误导。当它不是时,你称它为唯一的它是错误的。它可能是独一无二的,但很可能不会。您的函数生成一个随机(ish)字符串,而不是唯一 id,当然也不是 UUID。
    【解决方案2】:

    来自MySQL manual

    UUID 是一个 128 位数字,由 utf8 字符串表示,由五个十六进制数字组成,采用 aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 格式

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

    【讨论】:

    【解决方案3】:

    这是不可能的。

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

    【讨论】:

    • 说某事不可能是在程序员平台上应谨慎使用的句子:)
    • 同意 :-) 但是用这个函数是不可能的,仅仅获取前 8 个字符会大大降低字符串的唯一性,因此在我看来不是一个有效的解决方案。
    • 我也同意这一点,并将您的评论添加到我的回答中!
    【解决方案4】:

    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

    【讨论】:

      【解决方案5】:

      怎么样

      SELECT LEFT(UUID(), 8) FROM dual
      

      添加来自 Cas Wolters 的评论:

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

      【讨论】:

        猜你喜欢
        • 2010-11-12
        • 2016-09-05
        • 2015-04-04
        • 1970-01-01
        相关资源
        最近更新 更多