MySQL生成32位UUID

有時MySQL數據庫某些表的ID需要使用UUID值(由一組32位數的16進制數字所構成)作爲唯一識別碼。

可以通過MySQL自帶的UUID() 函數來生成:

select UUID();
結果爲:0a3eed30-9ad5-11e9-9835-b8ee6591991d

這樣獲取的是帶 “-” 分隔符的UUID,32位字符加上分隔符共36位,不符合要求,可以通過replace() 函數對獲取到的UUID的分隔符替換處理如下:

SELECT REPLACE(UUID(), '-', '');
結果爲:eccc72479ad511e99835b8ee6591991d

則獲取到了沒有分隔符的32爲UUID。

注:(以下介紹摘自百度百科)
UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照開放軟件基金會(OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和隨機數。
UUID由以下幾部分的組合:
(1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同。
(2)時鐘序列。
(3)全局唯一的IEEE機器識別號,如果有網卡,從網卡MAC地址獲得,沒有網卡以其他方式獲得。
UUID的唯一缺陷在於生成的結果串會比較長。關於UUID這個標準使用最普遍的是微軟的GUID(Globals Unique Identifiers),標準的UUID格式爲:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。
(4)在 hibernate 中, 採用 IP-JVM啓動時間-當前時間右移32位-當前時間-內部計數(8-8-4-8-4)來組成UUID。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章