Как преобразовать символьный столбец в числовой в SQL? - PullRequest
0 голосов
/ 14 марта 2019

Пример значений в столбце:

$3,459.09
$98.00
$6,789,123.15
$5,435.00

Я могу удалить знак доллара, используя подстроку, но не могу найти способ преобразовать символ в число.

Я попробовал пару вариантов 1. to_number(billed_amount) end as paid_amount_value 2. cast ( billed_amount as INT) as paid_amount_value

Ошибка: для 1-го:

ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

для 2-го:

ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

Ответы [ 3 ]

2 голосов
/ 14 марта 2019

используйте TO_Number и форматируйте '$999,999,999.99'

   select TO_Number('$3,459.09','$999,999,999.99') from dual

, поэтому в вашем случае

select TO_Number(column_name,'$999,999,999.99') from table_name

демонстрационная ссылка

0 голосов
/ 14 марта 2019

Ваши значения столбцов имеют двойные значения, поэтому вам нужно преобразовать их в десятичные.Вы можете использовать To_number, он позаботится об этом ..

Если вы заметите в своем сообщении об ошибке, значения имеют пробелы между ними.Итак, попытайтесь удалить их, затем приведите их тип данных.

to_number(billed_amount) as paid_amount работает для вас to_number

Для замены пустых мест вы можете использовать replace replace

0 голосов
/ 14 марта 2019

Если вы не используете double в качестве типа данных, используйте double.Вам нужно удалить запятые и пустые места, если они есть

...