2013-01-24 50 views
7

Tôi gặp sự cố với truy vấn của mình khi tôi đang cố chuyển đổi trường varchar thành double (số). Tôi có tuyên bố sql này:Làm thế nào để chuyển đổi Varchar để đôi trong sql?

SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC 

Thực ra tôi muốn hiển thị giá trị của totalBal theo thứ tự giảm dần. Nhưng kể từ khi lĩnh vực đó là trong varchar, resultset đôi khi là sai. Đây là resultset khi tôi đã cố gắng để truy vấn sử dụng câu lệnh:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

ResultSet là:

enter image description here

Các phân loại của totalBal là không đúng. Vì vậy, tôi quyết định chuyển đổi varchar thành số để nó có thể được sắp xếp một cách hoàn hảo. Bất kỳ ý tưởng?

Trả lời

16

sử dụng DECIMAL() hoặc NUMERIC() vì chúng là số chính xác và quy mô cố định.

SELECT fullName, 
     CAST(totalBal as DECIMAL(9,2)) _totalBal 
FROM client_info 
ORDER BY _totalBal DESC 
+0

Cảm ơn bạn cho ý tưởng này ... cập nhật mã với điều này ... 'CHỌN FullName, CAST (totalBal AS DECIMAL (9, 2)) AS totBal TỪ client_info ORDER BY totBal DESC' –

+0

bạn được chào đón ': D' –

0

Đây có thể là nhiều hơn mong muốn, đó là sử dụng phao thay vì

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC 
+3

" CAST as float "không hợp lệ trong MySQL. Vì vậy, điều này không làm việc cả. – m4ttsson