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

Kiểu dữ liệu SQL Server BIT - Hướng dẫn cơ bản

Giới thiệu về kiểu dữ liệu bit

Kiểu dữ liệu đại diện cho một thuộc tính lưu trữ dữ liệu số nguyên, ký tự, thời gian dữ liệu, dữ liệu nhị phân. Giả sử bạn có một ứng dụng web để ghi lại phản hồi của người dùng cho các câu hỏi khác nhau. Nó chứa nhiều câu hỏi phân đôi và một số câu hỏi dựa trên hộp văn bản, chẳng hạn như nhận xét. Trên phần phụ trợ, những phản hồi này được lưu trữ trong một bảng SQL.

Để thiết kế bảng, chúng tôi xác định các cột và kiểu trường cơ sở dữ liệu. SQL Server hỗ trợ nhiều kiểu dữ liệu khác nhau như số nguyên, ký tự, varchar (), float, DateTime, số, v.v. Điều tương tự cũng có thể được áp dụng cho các kiểu dữ liệu T-SQL. Để tìm hiểu thêm về các kiểu dữ liệu, hãy tham khảo tài liệu chính thức. Các trường hợp sử dụng phụ thuộc vào các giá trị mà chúng tôi muốn lưu trữ trong đó.

Giả sử chúng ta có các cột cụ thể trong bảng mà chúng ta đã tạo. Các cột đó chấp nhận giá trị Boolean 1,0 hoặc TRUE \ False. SQL. Do đó, trong SQL Server, một kiểu dữ liệu Boolean cụ thể - Bit được cung cấp.

Bit SQL Server là kiểu dữ liệu số nguyên chấp nhận các giá trị 0,1 và NULL. Nó có sẵn trong tất cả các phiên bản SQL Server, bao gồm Azure SQL Server, Azure Managed Instances và SQL trên Azure VM.

Lưu trữ kiểu dữ liệu bit

Về mặt lưu trữ, kiểu dữ liệu Bit được SQL Server tối ưu hóa. Nếu bạn có tám cột Bit trở xuống trong bảng, SQL Server sẽ lưu trữ chúng dưới dạng 1 byte. Tương tự, đối với các cột từ 9 đến 16 bit, nó tiêu thụ 2 byte. Ngoài ra, SQL Server chuyển đổi các giá trị Chuỗi TRUE và FALSE thành các giá trị tương ứng 1 và 0.

Cú pháp

Cú pháp của kiểu dữ liệu BIT trong SQL Server rất đơn giản:

 Bit

Sử dụng thực tế kiểu dữ liệu bit

Tập lệnh T-SQL sau tạo bảng sản phẩm và chèn hai giá trị dữ liệu sản phẩm vào đó:

  • Nếu sản phẩm có sẵn, bit [Có sẵn] của cột được đặt thành 1.
  • Nếu sản phẩm không có sẵn, bit [Có sẵn] của cột được đặt thành 0.
CREATE TABLE Products (
    [ProductName] varchar(20),
    [Available] BIT
);
Go
INSERT INTO Products (productname,available) values('A',1)
INSERT INTO Products (productname,available) values('B',0)
GO
SELECT * FROM Products

Hãy cắt ngắn bảng [Sản phẩm] và chèn các giá trị của bảng đó bằng cách sử dụng chuỗi TRUE và False.

TRUNCATE TABLE Products
INSERT INTO Products (productname,available) values('A','TRUE')
INSERT INTO Products (productname,available) values('B','False')
GO
SELECT * FROM Products

Như được hiển thị bên dưới, SQL Server chuyển đổi chuỗi TRUE thành 1 và False thành 0.

Tuy nhiên, nếu bạn cố gắng chèn bất kỳ giá trị nào khác, chẳng hạn như Có hoặc Không, vào kiểu dữ liệu Bit, bạn sẽ nhận được thông báo lỗi "Chuyển đổi không thành công".

INSERT INTO Products (productname,available) values('A','Yes')

Khi bạn chèn bất kỳ giá trị khác nào vào cột kiểu dữ liệu Bit, SQL Server sẽ chuyển đổi giá trị đó thành một. Ví dụ, trong tập lệnh sau, chúng tôi chèn giá trị 100 vào cột [có sẵn]. Không có thông báo lỗi nào xảy ra trong khi đó.

Nếu bạn chọn bản ghi, bạn xác thực rằng giá trị được chèn là 1.

INSERT INTO Products (productname,available) values('A',100)
SELECT * FROM Products;

Tương tự, SQL Server chuyển đổi giá trị âm thành giá trị 1 trong cột Bit. Như hình dưới đây, chúng tôi chèn giá trị -100 vào cột [có sẵn]. Chúng tôi nhận được giá trị một khi truy xuất nó:

INSERT INTO Products (productname,available) values('A',-100)
SELECT * FROM Products;

Trước đây, chúng tôi đã sử dụng kiểu dữ liệu Bit để kiểm tra tính khả dụng của sản phẩm. Chúng ta thường cần hiển thị văn bản ở front-end thay vì bit 1 và 0. Do đó, chúng ta có thể sử dụng câu lệnh CASE trong SQL Server.

Trong mã T-SQL sau, câu lệnh CASE trả về:

  • Giá trị 1:Sản phẩm có sẵn
  • Giá trị 0:Hết hàng
SELECT [ProductName], CASE [Available]
         WHEN 1 then  'Product is available.'
        WHEN 0 then 'Out of Stock'
        ELSE 'NA'
    END AS [Availability]
from products

Như chúng ta có thể thấy trước đó, SQL Server tối ưu hóa bộ nhớ cho kiểu dữ liệu Bit. [Bảng kiểm tra] sau có tám cột với kiểu dữ liệu Bit; do đó, nó sử dụng 1 byte để lưu trữ.

CREATE TABLE TestTable (
    [Column1] Bit,
    [Column2] Bit,
    [Column3] Bit,
    [Column4] Bit,
    [Column5] Bit,
    [Column6] Bit,
    [Column7] Bit,
    [Column8] Bit,
);

Ngoài ra, nếu bạn sử dụng tinyint hoặc kiểu dữ liệu Char (1) , nó sẽ sử dụng 1 byte cho mỗi cột. Bạn nên sử dụng kiểu dữ liệu Bit, trong khi bạn yêu cầu giá trị Boolean.

Bạn cũng có thể sử dụng kiểu dữ liệu Bit trong các thủ tục hoặc hàm được lưu trữ trả về giá trị Boolean. Ví dụ:chúng tôi có fn_customer () hàm kiểm tra id khách hàng và nếu nó tồn tại, nó sẽ trả về một giá trị khác, nó sẽ trả về 0.

CREATE FUNCTION fn_customer
(
   @CustomerID INT
)
RETURNS bit
AS
BEGIN
IF EXISTS (
SELECT [CustomerID] FROM [SalesLT].[Customer] 
WHERE [CustomerID][email protected] 
)
      RETURN 1
    RETURN 0
 END

Hàm này yêu cầu ID khách hàng làm tham số đầu vào. Nếu chúng tôi thực thi nó với ID khách hàng 10, bạn sẽ nhận được thông báo sau:

IF (dbo.fn_customer(10)=1)
   PRINT 'Customer record is available'
ELSE 
   PRINT 'Customer record is not available'

Tuy nhiên, nếu ID khách hàng không tồn tại trong [SalesLT]. [Khách hàng] bảng, hàm trả về giá trị 0. Điều kiện khối IF không đúng. Do đó, bạn nhận được thông báo được chỉ định trong mệnh đề ELSE:

Kết luận

Kiểu dữ liệu Boolean MSSQL - Kiểu dữ liệu Bit rất hữu ích cho các cột chấp nhận giá trị 0,1 hoặc NULL. SQL Server tối ưu hóa lưu trữ kiểu dữ liệu Bit; do đó, nó làm cho mã nhỏ gọn và hiệu quả. Tương tự, bạn có thể sử dụng nó để trả về các giá trị Boolean từ một thủ tục hoặc hàm được lưu trữ.

Cũng đọc

Xử lý các giá trị NULL một cách hiệu quả với Hàm COALESCE trong SQL cho người mới bắt đầu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đổi tên tất cả các Ràng buộc mặc định theo Tiêu chuẩn đặt tên hoặc Quy ước đặt tên trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 93

  2. SQL Server v.Next:Hiệu suất STRING_AGG, Phần 2

  3. Cách kết hợp ngày từ một trường với thời gian từ một trường khác - MS SQL Server

  4. Bạn có đang đo hiệu suất máy chủ SQL bằng các số liệu này không?

  5. 11 cách lấy khóa chính trong SQL Server (ví dụ T-SQL)