Làm thế nào để xử lý các giá trị NULL trong SQL một cách đúng đắn – sql coi null là 0

Một người bạn mới bắt đầu học SQL đã hỏi tôi về các giá trị NULL và cách xử lý chúng. Nếu bạn chưa quen với SQL, hướng dẫn này sẽ cung cấp cho bạn thông tin chi tiết về một chủ đề có thể gây nhầm lẫn…

Bạn đang xem: sql coi null là 0

Cách xử lý các giá trị NULL trong SQL đúng cách

Mẹo và thủ thuật để xử lý giá trị NULL trong T-SQL

Ảnh bởi Jeremy Perkins trên Hủy kết nối

Lời nói đầu

Một người bạn mới bắt đầu học SQL đã hỏi tôi về giá trị NULL và cách xử lý với họ. Nếu bạn chưa quen với SQL, hướng dẫn này sẽ cung cấp cho bạn thông tin chi tiết về một chủ đề có thể gây nhầm lẫn cho người mới bắt đầu.

NULL là gì?

NULL được sử dụng trong SQL để chỉ ra rằng một giá trị không tồn tại trong cơ sở dữ liệu.
Nó không bị nhầm lẫn với một chuỗi trống hoặc giá trị bằng không.

Trong khi NULL chỉ ra sự vắng mặt của một giá trị, thì chuỗi rỗng và không đều đại diện cho các giá trị thực tế. Để sử dụng phép loại suy, vì thiếu câu trả lời không nhất thiết có nghĩa là câu trả lời là “không”, thiếu giá trị không có nghĩa là nó bằng không.

Hiểu sai cách NULL hoạt động trong SQL có thể dẫn đến lỗi không mong muốn và đầu ra, do đó, không cần thêm quảng cáo, hãy xem chúng ta có thể giải quyết nó như thế nào.

Đối với bài tập này, chúng ta sẽ làm việc với bảng tblSouthPark .

< pre class = "kv kw kx ky gt nh bt ni">

CHỌN *
FROM tblSouthPark

1. Toán tử LÀ KHÔNG ĐỦ và KHÔNG ĐỦ

Chúng tôi không thể sử dụng toán tử so sánh, =, & lt;, & gt;, & lt; & gt; , để kiểm tra giá trị NULL . Thay vào đó, chúng ta phải sử dụng LÀ KHÔNG ĐẦY ĐỦ và KHÔNG ĐỦ vị từ .

  • LÀ KHÔNG ĐẦY ĐỦ : Trả về các hàng chứa Giá trị NULL

Cú pháp: biểu thức LÀ KHÔNG ĐỦ

 

CHỌN
ID,
Sinh viên,
Email1,
Email2
FROM tblSouthPark
WHERE Email1 < strong class = "ng jg"> LÀ KHÔNG ĐỦ
Email 2 KHÔNG ĐỦ
ĐƠN HÀNG THEO
ID

Truy vấn trên tạo ra tất cả các bản ghi trong đó cả cột Email1 và Email2 đều là KHÔNG.

  • KHÔNG ĐỦ: Như tên cho thấy, nó là nghịch đảo của IS NULL.

Cú pháp: biểu thức KHÔNG ĐẦY ĐỦ

 

CHỌN
ID,
Sinh viên,
Email1,
Email2
FROM tblSouthPark
TRONG ĐÓ
Email1 KHÔNG ĐỦ Email2 KHÔNG ĐẦY ĐỦ
ĐẶT HÀNG THEO
ID

Truy vấn trên tạo ra tất cả các bản ghi trong đó cả cột Email1 và Email2 KHÔNG ĐẦY ĐỦ.

2. Hàm ISNULL ()

Hàm ISNULL trả về giá trị được chỉ định nếu biểu thức đã cho là NULL. Ngược lại, nếu biểu thức không phải là NULL, nó sẽ trả về chính biểu thức đó.

Cú pháp: ISNULL (biểu thức, giá trị)

Hãy hiểu điều này bằng cách chạy một truy vấn đơn giản trên SouthPark bảng.

 

SELECT
ID,
Student,
ISNULL (Father, 'Missing') AS Father
FROM tblSouthPark
< strong class = "ng jg"> ĐẶT HÀNG THEO ID

Truy vấn này cho kết quả sau:

Vì biểu thức trong trường hợp Eric Cartman được đánh giá là NULL nên Hàm ISNULL trả về giá trị, Thiếu . Đối với các sinh viên khác, biểu thức không phải là NULL nên nó trả về chính biểu thức đó.

3. Hàm COALESCE ()

Hàm COALESCE trả về giá trị không phải NULL đầu tiên trong một danh sách nhất định. Không giống như hàm ISNULL , hàm này có thể chấp nhận nhiều biểu thức.

Cú pháp: COALESCE (biểu thức [1… ..n])

Ví dụ: SELECT COALESCE (NULL, NULL, 'red', 'blue', NULL) trả về red vì đó là giá trị không phải NULL đầu tiên. Nếu tất cả các giá trị đều là NULL, hàm COALESCE sẽ trả về NULL.

Hãy để chúng tôi sử dụng COALESCE Hàm trên bảng SouthPark của chúng tôi:

 

CHỌN
ID,
Sinh viên,
< strong class = "ng jg"> COALESCE (Email1, Email2, 'N / A') AS Primary_Email
FROM tblSouthPark
ĐẶT HÀNG THEO ID

Truy vấn trên cho kết quả sau:

Như mong đợi, vì cả Email1 và Email2 đều là rỗng trong trường hợp của Kenny, nên hàm COALESCE trả về N / A as the Primary_Email . Đối với Stan, Email2 được trả về dưới dạng Primary_Email vì nó là giá trị không phải NULL đầu tiên trong Hàm COALESCE . Đối với những người khác, Email1 được trả về dưới dạng Primary_Email .

4. CASE Expression

Chúng tôi cũng có thể sử dụng biểu thức CASE cũ tốt để thay thế các giá trị NULL.

Đây là cú pháp chung cho CASE biểu thức:

 

TRƯỜNG HỢP
KHI NÀO biểu thức_1 THÌ result_1
WHEN expression_2 THEN result_2
.
.
.
WHEN expression_n THEN result_n
ELSE < / strong> else_expression
HẾT

Chúng ta có thể tạo ra cùng một kết quả mà chúng ta đã nhận bằng cách sử dụng COALESCE ở trên bởi using CASE .

Truy vấn sẽ như sau:

 

CHỌN
ID,
Sinh viên,
TRƯỜNG HỢP

KHI Email1 KHÔNG ĐỦ THÌ Email1
KHI Email2 KHÔNG ĐẦY ĐỦ THÌ Email2
ELSE 'Không / A'
KẾT THÚC NHƯ Primary_Email
FROM tblSouthPark
ĐẶT HÀNG BẰNG ID

Truy vấn này cho cùng một kết quả:

Lưu ý: Biểu thức CASE là về mặt cú pháp tương tự như hàm COALESCE . Trên thực tế, COALESCE giống như cách viết tắt của CASE . Câu trước ngắn gọn và đơn giản nhưng phần sau rõ ràng và dễ hiểu hơn.

5. Hàm NULLIF ()

Hàm NULLIF nhận hai biểu thức và trả về NULL nếu các biểu thức bằng nhau hoặc biểu thức đầu tiên khác.

Cú pháp: NULLIF (biểu thức 1, biểu thức 2)

 

NULLIF ('Red', 'Orange') - Trả về màu đỏ
NULLIF (0, NULL) - Trả về 0
NULLIF (0,0) - Trả về NULL

Trong đó NULLIF rất hữu ích trong trường hợp dữ liệu chứa hỗn hợp các chuỗi rỗng và rỗng trong một cột. Hãy hiểu điều này bằng một ví dụ.

Chúng tôi thấy rằng cột Điện thoại trong bảng của chúng tôi chứa cả chuỗi NULL và rỗng.

Chúng ta có thể chuẩn hóa điều này bằng cách thay đổi khoảng trống chuỗi thành NULL bằng cách sử dụng NULLIF :

 

SELECT
ID,
Student,
NULLIF (Điện thoại, '') AS Điện thoại
FROM tblSouthPark < br /> ĐẶT HÀNG THEO ID

Truy vấn trên cho kết quả:

Một trường hợp sử dụng tốt khác cho NULLIF là để ngăn lỗi "chia cho không":

 

var1 = 1
var2 = 0

var1 / var2 - Điều này sẽ tạo ra lỗi "chia cho không"

var1 / NULLIF (var2,0) - Điều này không gây ra lỗi" chia cho không "

Trong trường hợp thứ hai, chúng tôi không nhận được lỗi" chia cho không "vì NULL được trả về ở mẫu số thay cho 0.

Mẹo thưởng

< ul class = "">

  • COALESCE là ANSI tiêu chuẩn, trong khi ISNULL NULLIF không. Điều này làm cho COALESCE trở nên tổng quát và di động hơn (trên các phiên bản SQL và RDBMS khác nhau) so với ISNULL NULLIF .
  • NULL là giá trị nhỏ nhất trong thứ tự sắp xếp. Nếu chúng ta sắp xếp theo một cột có chứa giá trị NULL, thì các hàng có giá trị NULL sẽ sắp xếp ở trên cùng theo mặc định. Sử dụng thứ tự sắp xếp DESC để sắp xếp ngược lại.
  •  

    Mẹo: Để sắp xếp theo thứ tự bảng chữ cái (ASC) với giá trị NULL tại cuối cùng, bạn có thể sử dụng biểu thức CASE trong mệnh đề ORDER BY:

    ĐẶT HÀNG THEO
    TRƯỜNG HỢP
    KHI column_name LÀ KHÔNG ĐỦ THÌ 1 ELSE 0 HẾT,
    column_name;

    • Các hàm tổng hợp trong SQL ( SUM , COUNT , AVG , MAX , MIN ) không xử lý các giá trị NULL và loại bỏ chúng trước khi thực hiện bất kỳ phép tính nào. Ngoại lệ duy nhất cho điều này là hàm COUNT (*) - nó trả về tổng số của tất cả các hàng, bao gồm cả những hàng mà tất cả các trường đều là NULL.
    • Trong trường hợp Mệnh đề GROUP BY , nếu một cột chứa các hàng có giá trị NULL thì các hàng đó sẽ được nhóm lại thành một nhóm.
    • Bạn có thể xâu chuỗi COALESCE NULLIF hàm trong trường hợp cột chứa cả chuỗi NULL và chuỗi rỗng và bạn cần tạo một cột tổng hợp. Ví dụ:

    BẢNG ĐẦU VÀO: Mẫu
    + ========================== =========== +
    | Làm việc | Ô |
    + ============== + ============== +
    | | 717-735-6382 |
    + -------------- + -------------- +
    | 546-373-9363 | 493-353-3638 |
    + -------------- + -------------- +
    | NULL | 657-428-3639 |
    + -------------- + -------------- +

    QUERY
    CHỌN COALESCE ( NULLIF (Work, ''), Cell) AS Primary FROM Mẫu

    OUTPUT
    + ==== ========== +
    | Chính |
    + ============== +
    | 717-735-6382 |
    + -------------- +
    | 546-373-9363 |
    + -------------- +
    | 657-428-3639 |
    + -------------- +

    Chúng ta cũng có thể sử dụng biểu thức CASE nhanh và bẩn để làm tương tự:

    TRƯỜNG HỢP KHI NÀO Làm việc & lt; & gt; '' THÌ Làm việc ELSE Ô HẾT

    Kết thúc

    Bây giờ bạn sẽ có tất cả những gì bạn cần để xử lý thành công các giá trị NULL trong SQL. Tất nhiên, chúng tôi không đề cập đến từng trường hợp cạnh ở đây, nhưng đây phải là một điểm khởi đầu tốt cho người mới bắt đầu. Nếu bạn gặp khó khăn, Stack Overflow là bạn của bạn. Như mọi khi, luyện tập là chìa khóa!


    Xem thêm những thông tin liên quan đến chủ đề sql coi null là 0

    Update column contains null values with 0 in SQL server

    • Tác giả: Programming for Everybody
    • Ngày đăng: 2021-10-17
    • Đánh giá: 4 ⭐ ( 1666 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: Update column contains null values with 0 in SQL server
      Videos
      How to create database and Table,Insert,Update,Delete in SQL Server step by step
      https://youtu.be/tD_HKFDw8-E
      How to update a column with sequence number in sql server
      https://youtu.be/d-gWnQWTzVw
      Fix Error SQL server Value cannot be null Parameter name viewInfo
      https://youtu.be/h5QnagtpLXs
      How to Convert SQL Server to MS Access(Northwind)
      https://youtu.be/Ir2YUXQJjUI
      Find Duplicates From a Table in SQL Server
      https://www.youtube.com/watch?v=gNLeahJpDoo&t=9s
      Insert,Update and Delete Statements in SQL Server
      https://www.youtube.com/watch?v=W56NBfjBlfc&t=82s
      Display Edit All Rows and select all rows in SQL Server
      https://www.youtube.com/watch?v=X7VeyFy55IE
      Back Up and Restore of SQL Server Databases
      https://www.youtube.com/watch?v=0HAtNA21RwQ&t=35s
      How to Create Auto Incremented Identity Column in SQL Server
      https://www.youtube.com/watch?v=gD0LBgGygwg&t=5s
      Import data from Excel to SQL Server database
      https://www.youtube.com/watch?v=iI6TdhbCs4U&t=20s
      Run an SQL script file - SQL Server
      https://www.youtube.com/watch?v=hk8SMxm3h6Y&t=3s
      How to Generate Script with data in SQL Server 2008
      https://www.youtube.com/watch?v=vZM7KPosg9A&t=12s
      How to attach database mdf file in sql server and fix an error occurred when attaching the database
      https://www.youtube.com/watch?v=0-_0JV96zuE&t=24s
      How to delete or reset stored FTP site passwords for Windows 10
      https://www.youtube.com/watch?v=Y1YG-6GtBfw
      برنامج لمعرفة اسم السرفر وعمل نسح احتياطية backup لقواعد بيانات Sql server وكيفية استعادتها VB.net
      https://www.youtube.com/watch?v=jXBGJxbMSbA&t=90s
      شرح تحويل قاعدة بيانات اكسيس إلى SQL والربط بينهما - Convert access to SQl Server
      https://www.youtube.com/watch?v=IuC3IifpyQs&t=23s
      Setup SQl Server 2008
      https://www.youtube.com/watch?v=ri9vemvOcQ8&t=98s
      كيفية تحويل قاعدة بيانات Access إلى SQL Server بدون برامج مع الربط بينهما مع وجود مفاجأة بالفيديو
      https://www.youtube.com/watch?v=GD1Q0WcENM0
      Connect Visual Basic.net with SQL Server by user and password(Local network)
      https://www.youtube.com/watch?v=Pa_MpM0x6BM&t=35s
      SQL Error: A network-related or instance-specific error
      https://youtu.be/romx5DmeTq8
      programming_for_everybody
      Tags:
      How do you update a column with null value in SQL Server?
      How do you replace null values in SQL with 0?
      Can null value be replaced with zero?
      How do you handle null values in SQL Server?
      Replace NULL with 0 in SQL
      How to use ISNULL in SQL Server
      Sql set value to null
      NULL value in SQL
      UPDATE NULL value in SQL
      SQL server if is NULL
      SQL is NULL
      programming_for_everybody
      programming_for_everybody_sql
      sqlservertutorial sqlserver microsoftsqlserver sqlservertutorialforbeginners sqltraining

    Giá trị NULL trong SQL

    • Tác giả: vietjack.com
    • Đánh giá: 3 ⭐ ( 8895 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: Giá trị NULL trong SQL - Học SQL cơ bản nâng cao. Học SQL trực tuyến theo các bước từ Khái niệm về database, Cú pháp SQL, Truy vấn SELECT, Truy vấn INSERT, Lệnh DELETE, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Lệnh TRUNCATE, Từ khóa DISTINCT, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Mệnh đề WHERE, Sử dụng Join, Sử dụng View, Sử dụng Sequence, Transaction, Hàm xử lý, Bảng tạm, Toán tử.

    NULL trong SQL Server

    • Tác giả: comdy.vn
    • Đánh giá: 5 ⭐ ( 4633 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: Tìm hiểu về NULL, logic ba giá trị, cách sử dụng toán tử IS NULL và IS NOT NULL trong SQL Server.

    NULL trong Microsoft SQL Server

    • Tác giả: viblo.asia
    • Đánh giá: 4 ⭐ ( 2326 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: 1. NULL là một giá trị đặc biệt có mặt trong tất cả các loại dữ liệu, từ kiểu số, ngày, chuỗi, đến bit… Nó đại diện cho giá trị “không biết”, hoặc “không tồn tại”. NULL không trùng với số 0 của kiểu...

    SQL SERVER: QUOTED_IDENTIFIER ON / OFF và ANSI_NULL ON / OFF là gì

    • Tác giả: www.thachphong.com
    • Đánh giá: 5 ⭐ ( 2533 lượt đánh giá )
    • Khớp với kết quả tìm kiếm:

    Giá trị NULL trong SQL

    • Tác giả: quantrimang.com
    • Đánh giá: 3 ⭐ ( 6021 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: NULL trong SQL là thuật ngữ được sử dụng để biểu diễn một giá trị bị khuyết thiếu.

    Giá trị NULL trong SQL, ISNULL trong SQL

    • Tác giả: hoclaptrinh.vn
    • Đánh giá: 5 ⭐ ( 9061 lượt đánh giá )
    • Khớp với kết quả tìm kiếm: Giá trị NULL trong SQL là khái niệm được sử dụng để biểu diễn một giá trị bị khuyết thiếu. Một giá trị NULL trong một bảng là một giá trị trong một trường và bị bỏ trống.

    Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

    Xem Thêm  Hướng dẫn cần thiết về khóa ngoại MySQL bằng các ví dụ thực tế - khóa ngoại cơ sở dữ liệu mysql