Vấn đề:
Bạn muốn chuyển đổi một chuỗi thành giá trị thập phân trong PostgreSQL.
Hãy chuyển đổi giá trị trong một chuỗi thành kiểu dữ liệu DECIMAL.
Giải pháp 1:
Chúng tôi sẽ sử dụng toán tử ::. Đây là truy vấn bạn sẽ viết:
SELECT ' 5800.79 '::DECIMAL;
Đây là kết quả:
số |
---|
5800.79 |
Như bạn nhận thấy, khoảng trắng ở đầu và cuối đã bị xóa.
Thảo luận:
Sử dụng toán tử ::để chuyển đổi các chuỗi chứa giá trị số thành kiểu dữ liệu DECIMAL. Trong ví dụ của chúng tôi, chúng tôi đã chuyển đổi chuỗi ‘5800.79’ thành 5800.79 (một giá trị DECIMAL).
Toán tử này được sử dụng để chuyển đổi giữa các kiểu dữ liệu khác nhau. Nó rất phổ biến trong PostgreSQL. Bạn cũng có thể sử dụng toán tử SQL tiêu chuẩn, CAST()
, thay vì ::
nhà điều hành.
Giải pháp 2:
SELECT CAST(' 5800.79 ' AS DECIMAL );
Đây là kết quả:
số |
---|
5800.79 |
Lưu ý rằng CAST()
, như ::
toán tử, loại bỏ các khoảng trắng bổ sung ở đầu và cuối chuỗi trước khi chuyển đổi nó thành một số.
Cơ sở dữ liệu PostgreSQL cung cấp thêm một cách để chuyển đổi. Sử dụng TO_NUMBER()
nếu bạn cần chuyển đổi các chuỗi phức tạp hơn. Hàm này nhận hai đối số:chuỗi cần chuyển đổi và mặt nạ định dạng cho biết cách diễn giải từng ký tự trong chuỗi. Xem ví dụ bên dưới:
Giải pháp 3:
SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );
Đây là kết quả:
số |
---|
-5800,79 |
Chuỗi định dạng mô tả chuỗi chứa số (giá trị đầu vào dưới dạng chuỗi). Trong ví dụ này, mặt nạ này chứa ký hiệu ‘FM’, biểu tượng này loại bỏ các khoảng trắng ở đầu và cuối. ‘9’ biểu thị một chữ số (trong ví dụ của chúng tôi là 5) và ‘G’ biểu thị một nhóm chữ số (trong ví dụ của chúng tôi, một khoảng trắng biểu thị một nhóm hàng nghìn).
Tiếp theo, ‘999’ chỉ ra ba chữ số nữa (800).
Ký hiệu ‘D’ chỉ định một điểm đánh dấu thập phân (ở đây, một điểm / chấm ‘.’). Sau ký hiệu thập phân là "99" hoặc hai chữ số thập phân.
Ký hiệu cuối cùng, ‘S’, chỉ định việc sử dụng dấu cộng hoặc dấu trừ (số của chúng tôi là số âm, vì vậy nó sẽ bị trừ).
Dưới đây là các ký hiệu được sử dụng nhiều nhất cho mặt nạ này:
Ký hiệumô tả | |
---|---|
FM | các số 0 ở đầu và khoảng trống đệm |
9 | một chữ số |
. | dấu thập phân cục bộ |
G | dấu phân tách nhóm |
D | dấu phân cách thập phân cục bộ |
S | dấu trừ hoặc dấu cộng |
L | ký hiệu nội tệ |
Bạn có thể tìm thêm thông tin định dạng số trong tài liệu PostgreSQL.