Một số Functions hữu ích của MySQL

    Query ra dữ liệu sau đó xử lý bằng ngôn ngữ lập trình thì cũng ngầu đấy nhưng bạn có biết MySQL cũng đã cung cấp cho chúng ta 1 số functions hữu ích này chưa?

CHARACTER_LENGTH

    Thức ra thì nó cũng chỉ tương tự như

# 1 câu query
a = User.find_by name: "abc"
# cộng 1 function của ngôn ngữ lập trình
a.length

    thì thay vào đó chúng ta sẽ viết

a = User.find_by(name: "abc").select(CHARACTER_LENGTH("users.name") AS name_length)
a.name_length

    Hmm thực ra thì mình thấy viết kiểu MySql này còn dài hơn ấy 😃)) nhưng biết thêm 1 cái mới cũng hay mà.

FORMAT

    Cách dùng thì giống CHARACTER_LENGTH nhé. Nhưng công dụng thì khác hoàn toàn nhé

FORMAT(number, decimal_places)

    number: số chúng ta cần format
decimal_places: nghe tên thì chúng ta kiểu là vị trí của số thập phân nhưng các bạn cứ hiểu đơn giản là số chữ số thập phân được lấy thêm. Ví dụ

SELECT FORMAT(250500.5634, 2);
=> 250,500.56

TRIM

    Loại bỏ khoảng trắng đầu cuối.
Cái này khá hay vì nếu bạn query ra 1 đối tượng Post và có trường content cần trim title ở nhiều nơi thì thay vì chỗ nào cũng phải post.content.strip dễ bị miss thì bạn có thể trim ngay ở câu truy vấn ví dụ như

SELECT TRIM('    SQL Tutorial    ') AS TrimmedString;
=> 'SQL Tutorial'

REPLACE

    Công dụng của nó cũng giống gsub của ruby - Replace tất cả 1 ký tự hoặc đoạn string nào đó với ký tự hoặc đoạn string khác

SELECT REPLACE(string, from_string, new_string)

    Ví dụ:

SELECT REPLACE("SQL Tutorial", "SQL", "HTML");
=> HTML Tutorial

GREATEST và LEAST

    Trả về giá trị lớn nhất và nhỏ nhất. Ví dụ:

SELECT GREATEST(3, 12, 34, 8, 25);
=> 34
SELECT LEAST(3, 12, 34, 8, 25);
=> 3

DATE_FORMAT

    Convert format của kiểu dữ liệu ngày tháng Ví dụ:

SELECT DATE_FORMAT("2017-06-15", "%Y");  
=> 2017

CASE

    Cái này mình nghĩ thực sự mọi người nên biết vì nó, hỗ trợ mình rất nhiều trong những trường hợp select theo điều kiện oái ăm.
Ví dụ:

SELECT OrderID, Quantity,
  CASE 
      WHEN Quantity > 30 THEN 'The quantity is greater than 30'
      WHEN Quantity = 30 THEN 'The quantity is 30'
      ELSE 'The quantity is under 30'
  END AS QuantityText
FROM OrderDetails;
OrderID Quantity QuantityText
1 12 The quantity is under 30
2 40 The quantity is greater than 30
3 10 The quantity is under 30

CAST

    Convert giá trị sang 1 kiểu dữ liệu cụ thể khác.
Ví dụ:

SELECT CAST("2017-08-29" AS DATETIME);
=> 2017-08-29 00:00:00

COALESCE

    Trả về giá trị đầu tiên không bị Null

SELECT COALESCE(NULL, NULL, NULL, 'The', NULL, 'Thao');
=> The

IF

    Quá quen rồi nhưng cú pháp của nó như này cơ

SELECT IF(condition, value_if_true, value_if_false)
# Giống trong excel nhỉ :))

Tổng kết

    Đây là 1 số function mà bản thân mình nghĩ nó sẽ hữu ích (trong 1 đống các function có sẵn của MySQL). Hy vọng là nó cũng giúp ích cho mọi người (bow)

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan