Sql 对存储在varchar中的数字进行除法

Sql 对存储在varchar中的数字进行除法,sql,postgresql,types,Sql,Postgresql,Types,我需要专家的帮助,帮助我如何在博士后中划分varchar 我有两栏,“价格”和“平方英尺”。Price附有一个美元符号,包含逗号,而Sq_Ft仅包含逗号 "Price" "Sq_Ft" $352,900 3,478 $357,630 3,587 $445,360 1,589 解决此问题并划分两个varchar值的最可行方法是什么 select "Price"

我需要专家的帮助,帮助我如何在博士后中划分varchar

我有两栏,“价格”和“平方英尺”。Price附有一个美元符号,包含逗号,而Sq_Ft仅包含逗号

"Price"             "Sq_Ft"                    
$352,900             3,478
$357,630             3,587
$445,360             1,589
解决此问题并划分两个varchar值的最可行方法是什么

select  "Price"::money / to_number("Sq_Ft",'99999999999')
from    t
;



您不应该在
varchar
列中存储数字。如果数字有$(美元符号)和逗号怎么办?整数数据类型失败。价格应存储为
十进制
,货币存储在单独的列中。如果“逗号”表示十进制分隔符,则为“是”。如果您指的是“千组分隔符”,那么答案是“否”。短数字(以及日期或时间戳)不带任何格式存储。显示值时应用格式。只需存储
345000
@PLearner:请注意,如果
lc\u monetary
使用不同的货币符号,则对
money
的转换将失败,然后
$
-您确实应该将这些列更改为
decimal
,并将货币存储在不同的列中
+---------+
| $101.47 |
+---------+
| $99.70  |
+---------+
| $280.28 |
+---------+
select  to_number("Price",'99999999999') / to_number("Sq_Ft",'99999999999')
from    t
;
+----------------------+
| 101.4663599769982749 |
+----------------------+
| 99.7017005854474491  |
+----------------------+
| 280.2769037130270610 |
+----------------------+