NEWID (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

创建 uniqueidentifier 类型的唯一值

Transact-SQL 语法约定

语法

NEWID ( )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

注意

Azure Synapse 无服务器池不支持。

返回类型

uniqueidentifier

注解

NEWID() 遵从 RFC4122。

示例

A. 对变量使用 NEWID 函数

以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。 在测试 uniqueidentifier 数据类型变量的值之前,先打印该值

-- Creating a local variable with DECLARE/SET syntax.  
DECLARE @myid uniqueidentifier  
SET @myid = NEWID()  
PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)  

下面是结果集。

Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF  

注意

NEWID 对每台计算机返回的值各不相同。 所显示的数字仅起解释说明的作用。

B. 在 CREATE TABLE 语句中使用 NEWID

适用于:SQL Server

以下示例创建数据类型为 uniqueidentifier 的 cust 表,并使用 NEWID 作为默认值填充该表。 为 NEWID() 赋予默认值时,每个新行和现有行均对 CustomerID 列具有唯一值。

-- Creating a table using NEWID for uniqueidentifier data type.  
CREATE TABLE cust  
(  
 CustomerID uniqueidentifier NOT NULL  
   DEFAULT newid(),  
 Company VARCHAR(30) NOT NULL,  
 ContactName VARCHAR(60) NOT NULL,   
 Address VARCHAR(30) NOT NULL,   
 City VARCHAR(30) NOT NULL,  
 StateProvince VARCHAR(10) NULL,  
 PostalCode VARCHAR(10) NOT NULL,   
 CountryRegion VARCHAR(20) NOT NULL,   
 Telephone VARCHAR(15) NOT NULL,  
 Fax VARCHAR(15) NULL  
);  
GO  
-- Inserting 5 rows into cust table.  
INSERT cust  
(Company, ContactName, Address, City, StateProvince,   
 PostalCode, CountryRegion, Telephone, Fax)  
VALUES  
 ('Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38', 'Oulu', NULL,  
 '90110', 'Finland', '981-443655', '981-443655')  
,('Wellington Importadora', 'Paula Parente', 'Rua do Mercado, 12', 'Resende', 'SP',  
 '08737-363', 'Brasil', '(14) 555-8122', '')  
,('Cactus Comidas para Ilevar', 'Patricio Simpson', 'Cerrito 333', 'Buenos Aires', NULL,   
 '1010', 'Argentina', '(1) 135-5555', '(1) 135-4892')  
,('Ernst Handel', 'Roland Mendel', 'Kirchgasse 6', 'Graz', NULL,  
 '8010', 'Austria', '7675-3425', '7675-3426')  
,('Maison Dewey', 'Catherine Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL,  
 'B-1180', 'Belgium', '(02) 201 24 67', '(02) 201 24 68');  
GO

C. 使用 uniqueidentifier 和变量赋值

以下示例将名为 @myid 的局部变量声明为 uniqueidentifier 数据类型的变量。 然后使用 SET 语句为该变量赋值。

DECLARE @myid uniqueidentifier ;  
SET @myid = 'A972C577-DFB0-064E-1189-0154C99310DAAC12';  
SELECT @myid;  
GO  

D. 使用 NEWID() 函数查询随机数据

以下示例使用 NEWID() 函数从 Production.Product 表中查询随机记录。 若要随机查询更多记录,请增大 TOP 值。

SELECT TOP 1 ProductID, Name, ProductNumber
FROM Production.Product
ORDER BY NEWID()
GO

另请参阅

NEWSEQUENTIALID (Transact-SQL)
ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
数据类型 (Transact-SQL)
系统函数 (Transact-SQL)
uniqueidentifier (Transact-SQL)
序列号