Можем ли мы ограничить нули после десятичной дроби в операторе выбора хранимой процедуры? - PullRequest
0 голосов
/ 11 июня 2019

В столбце «Мой доступный баланс» отображаются 7 нулей. Если бы я создал таблицу и дал ей числовой тип данных, я мог бы исправить это, но просто любопытно, можно ли ограничить нули после десятичного числа до 2 разрядов с помощью оператора «SELECT INTO» или нет?

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

Ответы [ 3 ]

0 голосов
/ 11 июня 2019

Да, вы можете сделать с функцией convert() или format().

Select convert(decimal(10,0), Yourvalue) 

10 - общее количество цифр, а 0 - цифры после десятичного числа

или Вы также можете выполнить форматирование, если вы используете сервер SQL. Оба одинаковы, но упоминается, что формат не очень удобен для исполнения

Select Format(Yourvalue, N'N0') 
0 голосов
/ 11 июня 2019

Да, вы можете добавить CAST как часть вашего оператора select следующим образом ...

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
0 голосов
/ 11 июня 2019

Вы можете использовать функцию ROUND в вашем select statement или указать число десятичных знаков при создании таблицы.

В качестве примера, имея нижеследующее определение:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...