(二)oralce数据库中sys_guid()和newid()

oralce数据库中sys_guid()和自定义函数newid()

在工作编写代码的时候发现,在写sql的时候经常使用newid();
然后自己测试:

使用NEWID() 生成guid

		SELECT NEWID() FROM DUAL;

查询出的ID有分隔符
在这里插入图片描述
ORACLE也有相同的函数,sys_guid() ,但是生成的格式跟newid()中的有区别。
sys_guid() 生成的guid不含有分隔符;

使用navicate工具查询出来的是乱码:

		SELECT sys_guid() FROM dual;

在这里插入图片描述
下面用一张测试表TMP_TEST_TABLE来验证一下两者的区别:

CREATE TABLE TMP_TEST_TABLE (
ID VARCHAR(36) NOT NULL,
NAME VARCHAR(4) NOT NULL,
AGE INTEGER NULL, 
BIRTHYEAR VARCHAR(4) NULL,
CREATEDTIME TIMESTAMP (6) NOT NULL ENABLE
)

在这里插入图片描述
插入两条数据:

INSERT INTO TMP_TEST_TABLE (ID,NAME,CREATEDTIME) VALUES (NEWID(),'AAA',SYSDATE);
INSERT INTO TMP_TEST_TABLE (ID,NAME,CREATEDTIME) VALUES (SYS_GUID(),'BBB',SYSTIMESTAMP);

查询TMP_TEST_TABLE表的数据:

SELECT * FROM TMP_TEST_TABLE;

在这里插入图片描述

在自己本地的oracle数据库中执行select newid() from dual;发现报错;
原来newid()是自定义函数。在自己本地oracle数据库创建自定义函数newid();

CREATE OR REPLACE FUNCTION newid RETURN VARCHAR2
IS
guid VARCHAR2 (50);
BEGIN
  guid := sys_guid();
  RETURN substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12);
END newid;

然后就可以正常使用newid()了。


版权声明:本文为weixin_47115586原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。