使用c#在sql中将money转换为字符串格式

时间:2014-02-12 12:35:10

标签: c# sql

我正在使用c#中的查询从SQL表中检索结果,并在转换资金时卡住format.string。我无法使用零转换为字符串格式。我希望PCN收费为7个字符(例如100为0010000)和法庭费用(15个像01500)。

string stringSql = " SELECT distinct  " +
                   " space(1991)," +
                   "'" + comboBox6.Text + "' as RecordType" +
                   " , left([Claimant Address7] +'
                   ',29) as ClaimantAddress7 " +
                   ", space(180)," +

错误就在这里

"(bat.PCN_Charge) *100 ".ToString().PadLeft(7, '0')  + // value output I get is 10000.0000( where PCN CHARGE is 100)
 ",([Court Fee])*100 ".ToString().PadLeft(5, '0') +  // value I get is 1500

(法院费用为15)

5 个答案:

答案 0 :(得分:1)

使用:

.ToString("D7") 

给出7位数字。

答案 1 :(得分:0)

在我看来,如果你能够,你应该利用C#中的字符串格式来格式化字符串,然后让数据库返回数据。这对你有用吗?

如果是,那么您可以使用:

String.Format("{0:0000000}", pcnCharge);
String.Format("{0:00000}", courtFee);

我在这里使用了“多0”格式来准确说明它输出的内容。您可以使用其他数字格式,这些格式在MSDN: Standard Numeric Format Strings上引用,例如D#,其中#是您要显示的位数,包括前导零(例如D5

String.Format("{0:D7}", pcnCharge);
String.Format("{0:D5}", courtFee);

答案 2 :(得分:0)

嗯,首先 - 你不应该做什么。

这是一个数字,抓住它。像这样存储它。将其格式化为向用户显示的位置。不在SQL查询中。任何形式的字符串操作都是SQL历史和当前的一个弱点,如果你把它拉到C#中,没有理由在SQL中这样做。

现在,如果你真的需要这样做,请使用自2012年以来就存在的SQL erver格式函数(你说的不是你使用的版本,所以我假设你没有使用过时的技术)。

http://technet.microsoft.com/en-us/library/hh213505.aspx

这个功能进入.NET框架并使用这些格式字符串,因此您可以轻松地执行此操作。然后它以某种方式在SQL中查找:

SELECT FORMAT([pcnCharge],'0000000') .... (I leave the rest to you)

答案 3 :(得分:0)

而不是:

.ToString().PadLeft(7, '0')

尝试:

.ToString(D7)

而不是:

.ToString().PadLeft(5, '0')

尝试:

.ToString(D5)

.ToString(D)转换为字符串十进制。 D7将确保它是7位数,因此10000将是0010000我相信它会在前面添加零。除了5位数之外,D5也是如此。

有关ToString格式,请参阅here

答案 4 :(得分:0)

如果使用MSSQL 2012,则可以尝试使用FORMAT功能完成任务。

DECLARE @d INT = '10';
SELECT FORMAT ( @d * 100, 'D7', 'en-US' )