money + char的SQL数据类型

时间:2012-07-30 03:23:46

标签: c# sql sql-server sql-server-2008 crystal-reports

我是使用水晶报告和c#创建报告的新手。我创建了一个显示客户端容量的c#程序。我现在唯一的问题是字段没有显示我想要的内容。我的sql中有一个表有'varchar'数据类型,因为我希望它显示带有文本的数字。我的问题是,当一个值有一千个分隔符时,它不会输入逗号。我想要的是将我的值显示为 25,000 /天而不是 25000 /天。这有可能吗?我应该使用什么数据类型?

3 个答案:

答案 0 :(得分:2)

在SQL Server中没有支持您的要求的数据类型。

更好的方法是将decimal用于您的数字,并为文本部分使用单独的列,即/day。这将帮助您运行需要十进制字段上的平均值,最小值,最大值的查询。稍后您可以使用C#格式化报告。

但是如果您无法更改数据库,那么您可以根据字符“/”拆分c#中的字符串,然后您可以使用ToString()以逗号格式化数字。以下几行:

    string str = "25000/day";
    string[] tempArray = str.Split('/');
    double number = 0;
    if(double.TryParse(tempArray[0],out number))
    {
        Console.WriteLine("Invalid Number");
    }
    Console.WriteLine(number.ToString("###,###.#######") + "/" + tempArray[1]);

答案 1 :(得分:0)

不能将其存储为小数,并在显示时使用ToString

进行格式化
string display = value.ToString("N") + "/day";

只存储十进制将占用更少的空间,如果需要,您也可以稍后在该字段上进行计算

答案 2 :(得分:0)

尝试使用string.Format()方法对其进行格式化。

string disp = String.Format( "{ 0:C}", Convert.ToInt32(value.split(@"/")[0])) + @"/" + value.split(@"/")[1];

其中value是您需要显示的值(即“25000 /天”)

HTH。