对于价格和价值,使用varchar over decimal是否有任何优势

The*_*ing 3 database-design types sql-server-2005

我和我的朋友争论反对他在varchar中存储价格,价值和其他类似信息的建议.

我的观点是基于

  1. 由于我们需要来回投射,计算将变得困难.
  2. 数据的完整性将丢失.
  3. 索引表现不佳
  4. 排序和聚合函数也需要转换

等等

但他说,在他以前的工作中,每个人都习惯将这些值存储在varchar中,因为DB和APP之间的通信在这种方法中非常有效.(我仍然不能接受这个)

在varchar中存储这些值真的有一些优点吗?

注意:我不是在谈论PhoneNo,ID,邮政编码,SSN等栏目.我知道varchar最适合那些.这些列是基于值的,并且肯定会以某种方式参与计算.

gbn*_*gbn 10

一个都没有.

尝试重新输出值并查看丢失的数据量.

DECLARE @foo TABLE (bar varchar(30))
INSERT @foo VALUES (11.2222222222)
INSERT @foo VALUES (22.3333333333)
INSERT @foo VALUES (33.1111111111)
SELECT CAST(CAST(bar AS float) AS varchar(30)) FROM @foo
Run Code Online (Sandbox Code Playgroud)

我还要提到他目前的就业情况有所不同......他不再是以前的工作......