본문 바로가기
DataBase/MsSql

MSSQL NEWID() 함수 특징 및 사용법

by 아우럼 2024. 4. 26.
반응형

NEWID() 함수는 MSSQL에서 고유 식별자(GUID)를 생성할 때 사용하는 함수입니다.

NEWID() 함수 특징

  • NEWID() 함수로 생성된 GUID는 호출될 때마다 중복되지 않는 임의의 값을 반환합니다.
  • NEWID() 함수와 RFC4122와 호환되고 있습니다. 즉 반환 값은 중복되지 않으면서 랜덤으로 값을 반환합니다.
  • NEWID()는 32 hex code로 되어 있는 Uniqueidentity 타입 함수입니다.

NEWID() 함수 사용법

SELECT 절에서 NEWID() 사용법.

  • 기본 소스 예제입니다.
--1.SELECT 절에서 NEWID() 사용법. 
SELECT  NEWID()  AS 'NewId'  ;

테이블 생성 때 NEWID() 사용법.

  • NEWID() 함수를 칼럼의 기본값으로 데이터를 입력할 때 임의의 값을 insert 할 수 있습니다.
-- 2. 테이블 생성시 NEWID() 사용법. 
DROP TABLE IF EXISTS InfoForIdentity;
CREATE TABLE InfoForIdentity (
	NewIdKey uniqueidentifier NOT NULL DEFAULT NEWID(),
	UserId varchar(255)   
);
 
INSERT INTO InfoForIdentity (UserId)
VALUES  (1001),(1002),(1003),(1004),(1005);

SELECT UserId, NewIdKey
	FROM InfoForIdentity;

데이터 타입 및 변수 사용 방법.

  • 데이터 타입은 uniqueidentifier으로 선언해야 사용할 수 있습니다.
  • NEWID() 계속 실행해서 중복되는 값이 있는지 확인하세요.
-- 3. 데이터 타입 및 변수 사용방법.
DECLARE @NewIdKey uniqueidentifier ;  
SET @NewIdKey = NEWID();  
SELECT @NewIdKey;

NEWID() 이용하여 Random으로 정렬.

  • order by에 newid() 함수 사용 예제입니다.
-- 4. NEWID() 이용하여 Random 으로 정렬
DROP TABLE IF EXISTS InfoForIdentityRandom;
CREATE TABLE InfoForIdentityRandom (
	UserId  int,
	UserNm varchar(255)  
) ON [PRIMARY];
INSERT INTO dbo.InfoForIdentityRandom(UserId,UserNm) VALUES
(1, N'Ken'),(2, N'Brian'),(3, N'Stephen'),(4, N'Michael'),(5, N'Linda');

SELECT TOP 10 *
FROM InfoForIdentityRandom
ORDER BY NEWID();

NEWID() to varchar 형으로 변환.

  • UNIQUEIDENTIFIER 타입을 varchar, cast를 이용하여 string 형태로 변환할 수 있습니다.
-- NEWID()을 varchar 형으로 변환
DECLARE @IdentityToString UNIQUEIDENTIFIER = NEWID()
SELECT CAST(@IdentityToString AS VARCHAR(50))
SELECT CONVERT(VARCHAR(50),@IdentityToString)
SELECT @IdentityToString;

NEWID() 실행 예제 입니다.
NEWID() 실행 예제 입니다.

NEWID() 함수 중복

  • 중복이 걱정되는 경우는 해당일에 unique index 생성하는 방법도 있습니다.
반응형