So sánh giữa IFNULL và COALESCE

SQL: So sánh giữa IFNULL và COALESCE

Hi các bạn,

Nay là bài đầu tiên về T-SQL tại blog mình. Chúng ta đã làm nên lịch sử này =)).

“We ain’t reading history anymore baby. We’re writing them”

Đùa thế thoy, bắt đầu nè. Cả 2 hàm này nó có cái hay của nó và case đặc biệt cho nó nhé 😀

Đầu tiên đi qua cái định nghĩa

1/ IFNULL

IFNULL(data, alt_data_value)

Hàm trong SQL này chắc trên trường dc dạy nhiều, cơ bản là nó sẽ check cái data của mình có NULL hay ko, NULL thì sẽ return về cái Alt Value mà mình đã define sẵn.

Hàm này chỉ có 2 tham số đầu vào nhé.

2/ COALESCE

COALESCE(value, fallback_value, fallback_value_2,…)

Hàm này trong SQL chắc ít người nghe tới, nhưng nó cũng rất hay. Cụ thể là nếu value null, nó sẽ đá qua fallback value, cứ thế đá qua nếu null.

VD:

  • COALESCE(null, null, ‘aaa’) => aaa
  • COALESCE(null, ‘aab’, null, null) => aab

Hàm này tham số đầu vào vô tận, truyền vào theo ý bạn 😀

3/ So sánh và cases sử dụng

Với những data đơn giản và bạn chỉ cần nó fallback lại 1 lần, bạn nên dùng IFNULL.

Đối với những data phức tạp cần fallback data khác nhau nhiều lần, ta sẽ sử dụng COALESCE.

Các cases mình nghĩ ra dc như sau:

  1. Check data cơ bản gì đó, ko có hay NULL thì fallback về giá trị mặc định => dùng IFNULL
  2. Multilingual system, auto fallback nếu thiếu ngôn ngữ => COALESCE (ví dụ: COALESCE(name_fr, name_en, name, “Khong co name)) =))
  3. Business có nhiều name (name, base_name, trade_name,…), fallback về những name mà có trong db => COALESCE như trên

4/ Kết luận về SQL: “So sánh giữa IFNULL và COALESCE”

Là vậy đó các bạn, mỗi thằng có cái hay riêng của nó, hãy sử dụng hợp lý để đạt dc mục đích của bạn :v

Cám ơn các bạn đã theo dõi bài SQL So sánh giữa IFNULL và COALESCE.

Mong rằng sắp tới có thể viết thêm 1 số bài về SQL =))

# SQL

# So sánh giữa IFNULL và COALESCE

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook