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

C# 使用c在sql中将货币转换为字符串格式#,c#,sql,C#,Sql,我使用c#中的查询从SQL表中检索结果,在转换货币时坚持使用format.string。我无法转换为带零的字符串格式。我希望PCN收费为7个字符(例如100个字符为0010000),法庭费用为15个字符(例如01500) 错误就在这里 "(bat.PCN_Charge) *100 ".ToString().PadLeft(7, '0') + // value output I get is 10000.0000( where PCN CHARGE is 100) ",([Court Fee]

我使用c#中的查询从SQL表中检索结果,在转换货币时坚持使用
format.string
。我无法转换为带零的字符串格式。我希望PCN收费为7个字符(例如100个字符为0010000),法庭费用为15个字符(例如01500)

错误就在这里

"(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)

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

如果是这样,您可以使用:

String.Format("{0:0000000}", pcnCharge);
String.Format("{0:00000}", courtFee);
我在这里使用了“多个0”格式来准确说明它的输出。您还可以使用其他数字格式,这些格式可以参考,例如
D
,其中#是要显示的位数,包括前导零(例如
D5

使用:


给出7个数字。

首先,你不应该做tiat

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

现在,如果您真的需要这样做,请使用SQL Server format函数,该函数自2012版起就存在(并且您没有说您使用的是哪个版本,因此我假设您没有使用过时的技术)

此功能进入.NET framework并使用这些格式字符串,因此您可以轻松做到这一点。然后,它在SQL中以某种方式如下所示:

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

.ToString().PadLeft(7, '0')
.ToString().PadLeft(5, '0')
尝试:

而不是:

.ToString().PadLeft(7, '0')
.ToString().PadLeft(5, '0')
尝试:

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


有关ToString格式,请参阅。

如果使用MSSQL 2012,则可以尝试使用函数执行任务

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

为什么不返回值,并使用C#使用
字符串格式化值。格式化
?是的。这很尴尬。您已经使用了C#,而SQL以糟糕的字符串操作而闻名——因此,为什么不在演示文稿中按原样(一个数字)进行格式化呢。
.ToString().PadLeft(5, '0')
.ToString(D5)
DECLARE @d INT = '10';
SELECT FORMAT ( @d * 100, 'D7', 'en-US' )