Implicit And Explicit Data Type Conversion – Chuyển đổi kiểu dữ liệu trong SQL

Trong SQL, dữ liệu có thể được chuyển đổi giữa các kiểu dữ liệu khác nhau thông qua hai phương pháp chính: chuyển đổi kiểu dữ liệu ngầm định (implicit conversion) và chuyển đổi kiểu dữ liệu rõ ràng (explicit conversion). Hiểu cách các phương pháp này hoạt động rất quan trọng để viết các câu lệnh SQL chính xác và tránh lỗi.

Implicit And Explicit Data Type Conversion – Chuyển đổi kiểu dữ liệu trong SQL

Chuyển đổi kiểu dữ liệu ngầm định (Implicit Data Type Conversion)

Chuyển đổi ngầm định xảy ra khi SQL tự động chuyển đổi một kiểu dữ liệu này sang kiểu dữ liệu khác mà không cần sự can thiệp của người dùng. Điều này thường xảy ra khi thực hiện các phép toán hoặc so sánh giữa các cột có kiểu dữ liệu khác nhau.

Ví dụ 1: Chuyển đổi giữa số và chuỗi

Giả sử bạn có một cột employee_id là số nguyên và bạn so sánh nó với một chuỗi.

SELECT *
FROM Employees
WHERE employee_id = '123';

Trong trường hợp này, SQL tự động chuyển đổi chuỗi ‘123’ thành số 123 để thực hiện so sánh.

Ví dụ 2: Chuyển đổi giữa ngày tháng và chuỗi

Nếu bạn có một cột hire_date là kiểu DATE và bạn so sánh nó với một chuỗi ngày tháng.

SELECT *
FROM Employees
WHERE hire_date = '2023-01-01';

SQL sẽ chuyển đổi chuỗi ‘2023-01-01’ thành giá trị DATE để thực hiện so sánh.

Chuyển đổi kiểu dữ liệu rõ ràng (Explicit Data Type Conversion)

Chuyển đổi rõ ràng yêu cầu người dùng chỉ định rõ ràng việc chuyển đổi giữa các kiểu dữ liệu bằng cách sử dụng các hàm chuyển đổi. Các hàm này bao gồm CAST, CONVERT (trong SQL Server), và các hàm cụ thể của từng hệ quản trị cơ sở dữ liệu.

Hàm CAST

Hàm CAST được hỗ trợ bởi nhiều hệ quản trị cơ sở dữ liệu và là cách chuẩn để chuyển đổi kiểu dữ liệu rõ ràng.

Chuyển đổi một chuỗi thành một số nguyên.

SELECT CAST('123' AS INT) AS int_value From DUAL;

word image 3201 1

Chuyển đổi một giá trị số thành một chuỗi.

SELECT CAST(123 AS VARCHAR(10)) AS string_value From DUAL;

word image 3201 2

Hàm CONVERT trong SQL Server

SQL Server cung cấp hàm CONVERT cho chuyển đổi kiểu dữ liệu rõ ràng, với khả năng chuyển đổi nhiều kiểu dữ liệu khác nhau.

Chuyển đổi một chuỗi thành một số nguyên.

SELECT CONVERT(INT, '123') AS int_value;

Chuyển đổi một giá trị DATE thành một chuỗi với định dạng cụ thể.

SELECT CONVERT(VARCHAR, GETDATE(), 101) AS date_string; -- 101: mm/dd/yyyy

Hàm TO_CHAR, TO_DATE, TO_NUMBER trong Oracle

Chuyển đổi một giá trị số thành một chuỗi.

SELECT TO_CHAR(123) AS string_value FROM dual;

Chuyển đổi một chuỗi thành một giá trị DATE.

SELECT TO_DATE('2023-01-01', 'YYYY-MM-DD') AS date_value FROM dual;

Chuyển đổi một chuỗi thành một số.

SELECT TO_NUMBER('123') AS number_value FROM dual;

Tóm lại:

  • Chuyển đổi ngầm định (Implicit Conversion): Tự động thực hiện bởi SQL khi cần thiết, không cần sự can thiệp của người dùng. Tuy nhiên, nó có thể dẫn đến lỗi nếu SQL không thể thực hiện chuyển đổi hợp lý.
  • Chuyển đổi rõ ràng (Explicit Conversion): Người dùng chỉ định rõ ràng việc chuyển đổi bằng cách sử dụng các hàm như CAST, CONVERT, TO_CHAR, TO_DATE, TO_NUMBER. Điều này giúp kiểm soát tốt hơn quá trình chuyển đổi và tránh lỗi.

Chúc anh em thành công.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận