TO_CHAR () TRONG ORACLE
TO_CHAR() là hàm chuyển đổi kiểu dữ liệu ngày tháng hoặc một con số sang kiểu dạng chuỗi.
Hàm TO_CHAR có thể được sử dụng dưới nhiều trường hợp khác nhau :
- Chuyển đổi kiểu định dạng của ngày tháng
- Chuyển đổi kiểu định dạng con số
- Dùng để so sánh, lọc dữ liệu từ mệnh đề WHERE
- ......
Mặc định kiểu dữ liệu ngày tháng trong oracle sẽ được khai báo là "DD/MON/RR"
Trong đó:
- DD là ngày tính từ 1 đến 31
- MON là viết tắt 3 từ đầu của tháng trong tiếng anh
- RR là một kiểu định dạng năm bắt đầu từ 1 đến 99
Đối với kiểu định dạng này có thể gây ít nhiều tới việc đọc dữ liệu của người dùng. Ta nên dùng TO_CHAR() để chuyển đổi lại kiểu dữ liệu.
Với câu lệnh TO_CHAR (HIRE_DATE,'DD/MM/YYYY') ta có thể chuyển đổi ngày tháng sang kiểu dễ hiểu hơn như ngày-tháng-năm (DD/MM/YYYY) , tháng-ngày-năm (MM/DD/YYYY),...
Các bạn có thể tìm hiểu các kiểu định dạng khác ở đây
Chuyển đổi kiểu định dạng con số
Các kiểu dữ dạng số thường được lưu dưới dạng như sau 20000 , 30000, 40000,...
Dùng để so sánh, lọc dữ liệu từ mệnh đề WHERE
Các con số này thường khó đọc vì phân định được số nào là hàng trăm số nào là hàng ngần, đối với cơ sơ dữ liệu lớn có tới hàng ngàn thậm chí hàng trăm triệu dòng thì rất khó để nhìn chính xác được.
Như các bạn thấy với hàm TO_CHAR (SALARY ,'$999,999,999.00') chúng ta có thể nhìn rõ và bắt mắt hơn rất nhiều so với cách thông thường, bạn cũng có thể thay dấu $ bằng một dấu khác hoặc bỏ đi cũng được
Ngoài việc chuyển đổi dữ kiệu, hàm TO_CHAR () cũng giúp chúng ta khá nhiều trong việc lọc dữ liệu từ mệnh đề WHERE
Ví dụ như tìm người có ngày vào làm (HIRE_DATE) là ngày 8 tháng 3
Với câu lệnh TO_CHAR(HIRE_DATE ,'DD/MM') ta chỉ cần lấy ngày tháng trong HIRE_DATE để so sánh với điều kiện lọc là ngày 8 tháng 3.
Ví dụ 2: tìm người có ngày thuê (HIRE_DATE) trước ngày 01/01/2007
Ở đây ta chú ý điều kiện so sánh là năm-tháng-ngày , vì đây là kiểu chuổi lên nó sẽ bắt đầu từ ký tự thứ nhất rồi đến ký tự thứ n. Nếu ta để theo định dạng ngày-tháng-năm thì khi so sánh nếu ngày nhỏ hơn sẽ ngưng mà không quan tâm đến năm , ví dụ ta có HIRE_DATE là 01/02/2008 (01022008) và điều kiện so sánh là ngày thuê trước 05/06/2007 (05062007) , khi so sánh kiểu chuỗi nó sẽ thấy 01 <05 mà không quan tâm đến năm 2008>2007 và sẽ trả về kết quả sai






Nhận xét
Đăng nhận xét