我正在使用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)
答案 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' )