Как преобразовать Varchar в Double в sql?

у меня проблема с моим запросом, когда я пытался преобразовать поле varchar в double (числовое). У меня есть этот оператор sql:

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

на самом деле я хочу, чтобы отобразить значения totalBal в порядке убывания. Но поскольку это поле находится в varchar, resultset иногда ошибается. Это resultset, когда я пытался запросить с помощью этого оператора:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

Resultset:

enter image description here

сортировка totalBal неверно. Так Я решил преобразовать varchar в числовой, чтобы он мог быть отсортирован идеально. Есть идеи?

2 ответов


использовать DECIMAL() или NUMERIC() по мере того как они фиксированные номера точности и масштаба.

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

Это может быть более желательно, то есть использовать float вместо

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