(1)oracle生成不重複字符串
在oracle8i以後提供了一個生成不重複的數據的一個函數sys_guid()一共32位,生成的依據主要是時間和機器碼,具有世界唯一性,類似於java中的UUID(都是世界唯一的)。
其優點就是生成的字符串是唯一的,但其和UUID有同樣的弊端:生成的序列過長並且沒有規律不方便記憶。
其應用場景:當數據庫某字段設置爲唯一,則可用次生成(比如主鍵);
獲取方式 select sys_guid() from dual ;
例如:
INSERT INTO usertable (id,project_id,subject_num,create_time)
selectsys_guid(),#{projectId},COMID,sysdate from User
where industry = ‘1111111’
(2)MySQL生成不重複字符串
在 MySQL 中,可以有如下幾種途徑實現唯一值:
1.自增序列
2.UUID() 函數
3.程序自定義
UUID 基於 16 進制,由 32 位小寫的 16 進制數字組成,如下:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
比如123e4567-e89b-12d3-a456-426655440000就是一個典型的 UUID。
MySQL實現了 UUID,並且提供 UUID() 函數方便用戶生成 UUID。在 MySQL 的 UUID() 函數中,前三組數字從時間戳中生成,第四組數字暫時保持時間戳的唯一性,第五組數字是一個 IEEE 802 節點標點值,保證空間唯一。使用 UUID() 函數,可以生成時間、空間上都獨一無二的值。據說只要是使用了 UUID,都不可能看到兩個重複的 UUID 值。當然,這個只是在理論情況下。