一、ORACLE
select sys_guid() from dual
查询效果:
二、MSSQL(SQLSERVER)
select newid()
--newid()生成了自带“-”36的uuid,要改为32位,需要自行替换
select replace(newid(),'-','')
查询效果:
三、MYSQL
select uuid()
--uuid()生成了自带“-”36的uuid,要改为32位,需要自行替换
select replace(uuid(),'-','')
查询效果:
四、DB2
方法一:自建UUID函数
很多数据库都提供了UUID/GUID函数,可DB2却没有,不知道IBM怎么想的,好在DB2提供的了自定义函数接口,而且支持JAVA,既然没有,提供JAVA自定义函数,也好啊,用JAVA写个UUID太容易了,几行代码,下面自己弄个UUID吧。
- JAVA类
import java.util.UUID;
import COM.ibm.db2.app.UDF;
public class UDFUUID extends UDF{
public static String uuid(){
UUID uuid = UUID.randomUUID();
//去掉中间的分隔
String uid = uuid.toString().replaceAll("-", "");
return uid;
}
}
- 把JAVA类放到DB2函数库目录下去,放到IBM\SQLLIB\FUNCTION下
- 用DB2带的jdk编译一下,
IBM\SQLLIB\java\jkd\bin\javac UDFUUID.java - 注册函数
drop function uuid;
create function uuid()
returns char(32)
fenced
variant
no sql
language java
parameter style java
external name 'UDFUUID!uuid';
- 查询效果:
select uuid() from sysibm.dual;
方法二:GENERATE_UNIQUE()
DB2不提供生成UUID的方法, 但是提供了GENERATE_UNIQUE()函数来生成唯一字符串, 但是要求也不少。
首先使用GENERATE_UNIQUE()函数生成的unique ID的列必须声明为FOR BIT DATA, 即在建表的时候需要指定该column为FOR BIT DATA类型.
//步骤如下, 首先定义一个TEST表
CREATE TABLE test(unique_id CHAR(13) FOR BIT DATA, name VARCHAR(20)
//然后测试插入数据
INSERT INTO test VALUES(GENERATE_UNIQUE(), 'Alex')
select查询数据得到:
五、HIVE
--
select replace(java_method("java.util.UUID","randomUUID"),'-','');
六、ACCESS
- 设置表结构
- 查询结果