我的AvailableBalance列在输出中显示7个零。如果我创建了一个表并为其指定了数字数据类型,我可以解决此问题,但只是好奇是否可以使用“ SELECT INTO”语句将小数点后的零限制为2位?
CREATE PROCEDURE SP_SMSBRegistration
AS
BEGIN
SELECT
s.Br,
s.Cid,
s.MobileNo,
s.Acc,
s.Status,
AvailableBalance = (select dbo.GetAvailBalAmt(acc,0)/100),
Cast(b.CurrRunDate As Date) CurrRunDate,
Cast(s.ExpiryDate As Date) ExpiryDate,
sp.SMSBEnabled,
sp.SMSBRegistrationCharges,
sp.SMSBRenewalGL
INTO #SMSB_temp
FROM
SMSCIF s
LEFT JOIN
BRPARMS b
ON s.Br = b.Br
CROSS JOIN
SMSParms sp
0.0000000
0.0000000
14909.7000000
0.0000000
0.0000000
0.0000000
103203.4100000
3826.8700000
0.0000000
131222.6000000
198.9900000
0.0000000
4726.7800000
答案 0 :(得分:0)
您可以在select statement
中使用ROUND函数,也可以在创建表格时指定小数点的数量。
例如,通过以下定义:
CREATE TABLE [dbo].[Table1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Dec1] [decimal](18, 0) NULL,
[Dec2] [decimal](18, 2) NULL,
[Dec3] [decimal](18, 3) NULL
)
如果您在查询下面运行
insert into Table1 (Dec1, Dec2, Dec3)
values (100.0/3.0, 100.0/3.0, 100.0/3.0)
您将获得以下结果,该结果显示不同的小数点位数
ID Dec1 Dec2 Dec3
1 33 33.33 33.333
答案 1 :(得分:0)
是的,您可以使用convert()
或format()
函数。
Select convert(decimal(10,0), Yourvalue)
总位数为10,0为小数点后的数字
或如果使用SQL Server,也可以进行格式化。两者相同,但有人提到格式不是很友好的性能
Select Format(Yourvalue, N'N0')
答案 2 :(得分:0)
是的,您可以像这样...那样在您的select语句中添加CAST。
DECLARE @myfloat FLOAT
SELECT @myfloat = 2.0/3.0
SELECT @myfloat
SELECT
Cast(@myfloat As numeric(10,2)) mynum
INTO #SMSB_temp
select * from #SMSB_temp