Sql 对存储在varchar中的数字进行除法
我需要专家的帮助,帮助我如何在博士后中划分varchar 我有两栏,“价格”和“平方英尺”。Price附有一个美元符号,包含逗号,而Sq_Ft仅包含逗号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"
"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 |
+----------------------+