Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng NEWID () để tạo giá trị duy nhất trong SQL Server

Trong SQL Server, bạn có thể sử dụng NEWID() chức năng tạo ra một giá trị duy nhất.

Cụ thể hơn, đó là một chức năng tuân thủ RFC4122 tạo ra một giá trị duy nhất của loại uniqueidentifier .

Giá trị NEWID() sản xuất là một GUID 16 byte được tạo ngẫu nhiên (Bộ nhận dạng duy nhất trên toàn cầu). Đây còn được gọi là UUID (Mã định danh duy nhất phổ biến).

Ví dụ 1 - Câu lệnh SELECT cơ bản

Đây là SELECT nhanh câu lệnh trả về NEWID() :

SELECT NEWID() AS Result;

Kết quả:

+--------------------------------------+
| Result                               |
|--------------------------------------|
| ab1b299b-9781-48d9-bedc-f238f6f5cc57 |
+--------------------------------------+

RFC4122 bao gồm 5 phiên bản (hoặc loại phụ). Tôi có thể nói rằng ví dụ này sử dụng RFC4122 phiên bản 4, vì 4 ở vị trí có liên quan. Phiên bản 4 chỉ định rằng GUID được tạo ngẫu nhiên hoặc giả ngẫu nhiên. Các phiên bản khác sử dụng các phương pháp khác để tạo GUID.

Khi xem tất cả các ví dụ trên trang này, bạn sẽ nhận thấy rằng tất cả chúng đều là duy nhất, nhưng chúng đều có dạng: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , có nghĩa là tất cả chúng đều là GUID phiên bản 4 và do đó chúng đều được tạo ngẫu nhiên hoặc giả ngẫu nhiên.

Ví dụ 2 - Sử dụng NEWID () với một biến

Dưới đây là một ví dụ về cách đặt giá trị của NEWID() vào một biến, sau đó chọn nó.

DECLARE @myguid uniqueidentifier = NEWID();
SELECT @myguid AS Result;

Kết quả:

+--------------------------------------+
| Result                               |
|--------------------------------------|
| b6cfb25a-3f81-4e5a-a304-a4b44fb5dbeb |
+--------------------------------------+

Ví dụ 3 - Chuyển đổi thành chuỗi

Dưới đây là một ví dụ về chuyển đổi giá trị biến thành một chuỗi, sau đó in nó ra.

DECLARE @myguid uniqueidentifier = NEWID();
PRINT 'Value: '+ CONVERT(varchar(255), @myguid);

Kết quả:

Value: 9A229A64-6FE0-417E-B07D-78444EA7DA5B

Ví dụ 4 - Dưới dạng giá trị DEFAULT trong cơ sở dữ liệu

Đây là một ví dụ về việc sử dụng NEWID() làm giá trị mặc định trong cột cơ sở dữ liệu.

USE Test;
CREATE TABLE Customer 
(
    CustomerId uniqueidentifier NOT NULL DEFAULT NEWID(),
    CustomerName varchar(70) NOT NULL,
);

INSERT Customer (CustomerName)
VALUES
    ('Peter Griffin'),
    ('Marge Simpson'),
    ('Borat Schwarzenegger');

SELECT * FROM Customer;

Kết quả:

+--------------------------------------+----------------------+
| CustomerId                           | CustomerName         |
|--------------------------------------+----------------------|
| 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin        |
| 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson        |
| ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |
+--------------------------------------+----------------------+

Trong ví dụ này, tôi tạo một bảng bao gồm mã bảo mật duy nhất cột có giá trị mặc định được tạo bởi NEWID() . Sau đó tôi chèn dữ liệu vào bảng đó. Khi tôi làm điều này, tôi không chỉ định CustomerId , vì vậy nó sử dụng giá trị mặc định (được tạo bởi NEWID() ). Cuối cùng, tôi chọn nội dung của bảng, trong đó hiển thị sử dụng GUID được tạo với mỗi lần chèn hàng.

Ví dụ 5 - Được chỉ định rõ ràng trong câu lệnh INSERT

Bạn cũng có thể sử dụng rõ ràng NEWID() khi chèn dữ liệu.

Như thế này:

INSERT Customer (CustomerId, CustomerName)
VALUES
    (NEWID(), 'Bart Farnsworth'),
    (NEWID(), 'Bruce Norris');

SELECT * FROM Customer;

Kết quả:

+--------------------------------------+----------------------+
| CustomerId                           | CustomerName         |
|--------------------------------------+----------------------|
| 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin        |
| 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson        |
| ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |
| a21e9a65-5efd-43ea-bd8b-8040b379617a | Bart Farnsworth      |
| 5ae0e501-3944-4be0-bf8a-ba964d8d13ed | Bruce Norris         |
+--------------------------------------+----------------------+

Ở đây tôi sử dụng NEWID() để tạo một ID duy nhất cho mỗi hàng và do đó giá trị mặc định không được sử dụng. Dù bằng cách nào, cả hai đều được tạo bởi NEWID() vì vậy, chúng tôi nhận được cùng một kết quả một cách hiệu quả - một GUID được tạo ngẫu nhiên.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 Phương pháp hay nhất về chỉ mục SQL Server để cải thiện hiệu suất

  2. Ví dụ về SIN () trong SQL Server

  3. Cách DENSE_RANK () hoạt động trong SQL Server

  4. xác định bộ ký tự của một bảng / cơ sở dữ liệu?

  5. Tên cột hoặc số lượng giá trị được cung cấp không khớp với định nghĩa bảng