Bạn cần hai cột:
- một cho giá trị, một float / double (hoặc một số nguyên) có thể được sắp xếp, được sử dụng trong các phép toán như tính tổng, v.v.
- một cho đơn vị tiền tệ (một ký tự (3) tuân theo tiêu chuẩn ISO 4217 ) được sử dụng cho các mục đích khác (hiển thị, có thể chuyển đổi, v.v.)
Việc lưu trữ cả giá trị và ký hiệu bên trong một varchar là vô nghĩa, đặc biệt là vì vị trí của ký hiệu tiền tệ khác nhau giữa các quốc gia (có thể ở đầu hoặc cuối), có thể có một khoảng cách giữa ký hiệu và giá trị, hoặc không, v.v.
Điều đó đang được nói, nếu bạn không muốn thay đổi bảng của mình, một cái gì đó tương tự có thể hoạt động:
ORDER BY CAST(
REPLACE(REPLACE(REPLACE(thecolumn,'$',''),'£',''),'₹','')
AS DECIMAL(10,2)
)