VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

NEWID

功能描述

NEWID函数用于生成一个随机UUID。UUID是一个32位的十六进制数据,具有全局唯一性。

返回类型: UUID类型(uniqueidentifier类型

注意事项

  • 该功能仅在数据库兼容模式为SQL Server时支持(即数据库实例初始化时指定DBCOMPATIBILITY='MSSQL')。

  • NEWID()的结果遵循RFC 4122规范。

语法格式

NEWID()

示例

示例1: 直接调用NEWID函数。

select NEWID();

返回结果如下:

                newid
--------------------------------------
 0297db7c-d799-4872-b777-4f06e54fa2c0
(1 row)

示例2: 创建一个包含UUID类型的测试表,调用NEWID函数向测试表中插入数据。

1、创建测试表,其中字段col1的数据类型为UUID。

CREATE TABLE table_1309 (
col1 UUID NOT NULL ,
col2 text);

2、调用NEWID函数向col1字段插入UUID数据。

insert into table_1309 values (newid(),'test');

3、查看测试表数据。

select * from table_1309;

返回结果如下:

                 col1                 | col2
--------------------------------------+------
 4f029714-0b0a-4d08-b183-8ef6907e7f96 | test
(1 row)

示例3: 创建一个包含UUID类型的测试表,指定UUID字段默认值为NEWID()。

1、创建测试表dept,其中deptno为UUID类型。

CREATE TABLE dept (
deptno UUID NOT NULL default newid(), dname VARCHAR2(14), loc VARCHAR2(13));

2、向dept表中插入数据,插入时不指定字段deptno的值。

INSERT INTO dept(dname,loc) VALUES ('ACCOUNTING','NEW YORK');
INSERT INTO dept(dname,loc) VALUES ('RESEARCH','DALLAS');
INSERT INTO dept(dname,loc) VALUES ('SALES','CHICAGO');
INSERT INTO dept(dname,loc) VALUES ('OPERATIONS','BOSTON');

3、插入数据时deptno字段将自动填充NEWID()的结果。查看测试表数据:

select * from dept;

返回结果如下:

                deptno                |   dname    |   loc
--------------------------------------+------------+----------
 98527b7a-c918-4862-b2ad-f573a34f9826 | ACCOUNTING | NEW YORK
 337b53bb-2016-40dc-a02f-c4ede2b109dd | RESEARCH   | DALLAS
 cb380d0d-e016-448e-9920-8eab8ad7720c | SALES      | CHICAGO
 57f9aa19-2d52-4deb-8e24-8e83b16b6ee6 | OPERATIONS | BOSTON
(4 rows)

示例4: 将NEWID的值赋给自定义变量使用。

1、设置参数enable_set_variable_mssql_format为on,表示在SQL Server数据库兼容模式下支持自定义用户变量的功能。

set enable_set_variable_mssql_format=on;

2、将NEWID的值赋给@b_1155。

declare @b_1155 UUID =newid();

3、直接查看变量@b_1155的值。

select @b_1155;

返回结果如下:

               @b_1155
--------------------------------------
 fe5da549-7c93-41a7-95f6-19735a7a73e1
(1 row)

示例5: 使用NEWID函数查询随机数据。

示例在查询语句中使用了TOP子句来限制查询结果集中返回的行数。

1、创建测试表并插入数据。

create table product (ID UUID default NEWID(), name text);
insert into product (name) values('pdt1'),('pdt2'),('pdt3'),('pdt4'),('pdt5'),('pdt6'),('pdt7'),('pdt8'),('pdt9'),('pdt10');

2、使用如下语句进行查询,其含义是从product表中查询随机记录,TOP子句表示仅返回前5条记录。

SELECT TOP 5 ID, Name FROM Product ORDER BY NEWID();

返回结果是随机的5条数据,例如:

                  id                  | name
--------------------------------------+-------
 a77df42e-2b43-4055-9c47-58434e33bf26 | pdt5
 056478cc-8d87-45a4-a804-c3afca32d2ce | pdt7
 123a02bb-66b7-4bd9-9049-b813c3d29141 | pdt2
 aeeaed81-df01-4a91-a6eb-50ea4d834941 | pdt3
 625b1aa3-3afd-4d35-8a1d-6e1a4bf6964c | pdt10
(5 rows)