Khi làm việc với cơ sở dữ liệu trong PostgreSQL, bạn sẽ gặp nhiều trường hợp cần phải chuyển đổi giữa các kiểu dữ liệu khác nhau. PostgreSQL cung cấp các cách thức khác nhau để thực hiện việc chuyển đổi này một cách dễ dàng và hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện chuyển đổi giữa các kiểu dữ liệu trong PostgreSQL thông qua các phương pháp thông dụng như ép kiểu (casting), sử dụng các hàm chuyển đổi có sẵn và cách tự định nghĩa kiểu chuyển đổi nếu cần thiết.
1. Ép kiểu dữ liệu (Casting)
Trong PostgreSQL, ép kiểu (casting) cho phép bạn chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác. Cú pháp ép kiểu có thể được thực hiện theo hai cách:
- Sử dụng cú pháp
::
- Sử dụng từ khóa
CAST
Ví dụ sử dụng ::
Trong ví dụ trên, chuỗi '123'
được chuyển đổi thành kiểu số nguyên (INTEGER
).
Ví dụ sử dụng CAST
SELECT CAST('123' AS INTEGER);
Cả hai cách đều cho kết quả giống nhau, nhưng cú pháp ::
phổ biến hơn vì nó ngắn gọn hơn.
Chuyển đổi giữa các kiểu dữ liệu khác
Chuyển đổi từ chuỗi thành số
Bạn có thể chuyển đổi từ một chuỗi (string) thành số nguyên (INTEGER
) hoặc số thực (NUMERIC
).
SELECT '123.45'::NUMERIC;
Chuyển đổi từ số thành chuỗi
Bạn có thể chuyển đổi một số thành chuỗi bằng cách ép kiểu hoặc sử dụng các hàm chuỗi.
Hoặc sử dụng hàm TO_CHAR()
để định dạng số trước khi chuyển đổi:
SELECT TO_CHAR(123.45, '999D99');
Kết quả của hàm TO_CHAR()
sẽ trả về chuỗi '123.45'
.
2. Sử dụng các hàm chuyển đổi có sẵn
PostgreSQL cung cấp nhiều hàm chuyển đổi để chuyển đổi giữa các kiểu dữ liệu khác nhau. Dưới đây là một số hàm phổ biến:
TO_NUMBER()
Chuyển đổi từ chuỗi thành số.
SELECT TO_NUMBER('123.45', '999D99');
TO_CHAR()
Chuyển đổi số hoặc ngày tháng thành chuỗi.
SELECT TO_CHAR(12345, '99999');
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD');
TO_DATE()
và TO_TIMESTAMP()
Chuyển đổi chuỗi thành ngày (DATE
) hoặc timestamp (TIMESTAMP
).
SELECT TO_DATE('2023-10-07', 'YYYY-MM-DD');
SELECT TO_TIMESTAMP('2023-10-07 14:30', 'YYYY-MM-DD HH24:MI');
3. Chuyển đổi kiểu dữ liệu người dùng định nghĩa
Ngoài các kiểu dữ liệu cơ bản, PostgreSQL cho phép bạn định nghĩa các kiểu dữ liệu mới và tạo hàm để chuyển đổi giữa các kiểu dữ liệu này.
Giả sử bạn có một kiểu dữ liệu người dùng định nghĩa là complex
để lưu số phức. Bạn có thể định nghĩa một hàm chuyển đổi để ép kiểu từ chuỗi thành số phức như sau:
CREATE TYPE complex AS (real DOUBLE PRECISION, imag DOUBLE PRECISION);
CREATE OR REPLACE FUNCTION string_to_complex(text)
RETURNS complex AS $$
DECLARE
parts TEXT[];
result complex;
BEGIN
parts := regexp_split_to_array($1, ',');
result.real := parts[1]::DOUBLE PRECISION;
result.imag := parts[2]::DOUBLE PRECISION;
RETURN result;
END;
$$ LANGUAGE plpgsql;
SELECT string_to_complex('3.0,4.0');
Hàm này chuyển chuỗi có định dạng '3.0,4.0'
thành một số phức.
Kết luận
Chuyển đổi kiểu dữ liệu trong PostgreSQL rất linh hoạt với nhiều phương pháp khác nhau như ép kiểu trực tiếp hoặc sử dụng các hàm có sẵn. Bạn có thể dễ dàng chuyển đổi giữa các kiểu dữ liệu số, chuỗi, ngày tháng và thậm chí cả kiểu dữ liệu do người dùng định nghĩa. Việc hiểu rõ cách thức chuyển đổi sẽ giúp bạn tối ưu hóa quá trình làm việc với dữ liệu trong cơ sở dữ liệu PostgreSQL.