Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,554
1

T-SQL сумма прописью

20.01.2019, 00:02. Показов 8320. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте ребята. Есть таблица
T-SQL
1
2
3
create table T1(id int identity,
                name nvarchar(30),
        price money);
На пример там есть
T-SQL
1
2
3
4
insert into T1(name, price)
values (N'Чай', 40),
       (N'Хлеб', 70.85),
      (N'Пива', 14.85)
Вопрос: как реализовать на это примере "сумма прописью" ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2019, 00:02
Ответы с готовыми решениями:

Сумма прописью
Кто сталкивался с такой проблемой? Есть функция СуммаПрописью, которая дана в Акцессе в базах...

Сумма прописью
Добрый день! Подскажите плиз в чём может быть проблема. Модуль "Сумма прописью" сам по себе...

Сумма прописью
Извините, за избитый вопрос, как в отчете вывести сумму прописью? Спасибо

Сумма прописью
pagpal привет! Продолжаю мучать проект: как при нажатии на кнопку вставить число с прописью к полю...

5
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
20.01.2019, 09:37 2
Если нужно на русском, то можно нагуглить различные реализации, как на T-SQL, так и на .NET
0
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,554
20.01.2019, 11:30  [ТС] 3
Цитата Сообщение от invm Посмотреть сообщение
то можно нагуглить различные реализации
Нагуглиль да, есть примеры
http://www.sql.ru/forum/137775/summa-propisu
http://kbyte.ru/ru/Programming... &mode=show
Не понял как вызвать это процедуру при SELECT-е и за этого создал тема. А на русском или на другом языке - когда будет ясно как вызвать это процедуру при SELECT-е можно потом переделать на другом языке
0
1644 / 1145 / 171
Регистрация: 23.07.2010
Сообщений: 6,795
20.01.2019, 11:37 4
IMHO негоже такие вещи на сиквел вешать. Этим должен заниматься сервер приложений (если есть в наличии) или клиент
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
20.01.2019, 11:46 5
Цитата Сообщение от xxbesoxx Посмотреть сообщение
Не понял как вызвать это процедуру при SELECT-е
При селекте никак. Нужно переделать в функцию:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
use tempdb;
go
 
if object_id('dbo.fnNumberAsPhrase', 'FN') is not null
 drop function dbo.fnNumberAsPhrase;
go
 
create function dbo.fnNumberAsPhrase
(
 @summa money
)
returns varchar(255)
begin
Declare @res Varchar(255), @A1 Varchar(40),@A2 char(3), @b1 char(1), @b2 char(1), @b3 char(1)
Declare @i integer
--Declare @res Varchar(255)
select @a1=Convert(VarChar(255),abs(@summa))
select @i=CharIndex('.',@a1)
if @i>0
 select @a1=Substring(@a1,1,@i-1)
select @a1=Replicate(' ',20)+@a1
Select @a2=Right(@a1,3)
Select @b1=Substring(@a2,1,1)
Select @b2=Substring(@a2,2,1)
Select @b3=Substring(@a2,3,1)
-- единицы
if @b3='1' and @b2<>'1' 
 select @Res=' рубль' 
else if @b3 in ('2','3','4') and @b2<>'1' 
 select @Res=' рубля'
else 
 select @Res=' рублей'
if @b2='1' 
  begin
    if @b3='0'  select @Res=' десять'+@Res else
    if @b3='1'  select @Res=' одиннадцать'+@Res else
    if @b3='2'  select @Res=' двенадцать'+@Res else
    if @b3='3'  select @Res=' тринадцать'+@Res else
    if @b3='4'  select @Res=' четырнадцать'+@Res else
    if @b3='5'  select @Res=' пятнадцать'+@Res else
    if @b3='6'  select @Res=' шестнадцать'+@Res else
    if @b3='7'  select @Res=' семнадцать'+@Res else
    if @b3='8'  select @Res=' восемнадцать'+@Res else
    if @b3='9'  select @Res=' девятнадцать'+@Res
  end
else
  begin
    if @b3='1'  select @Res=' один'+@Res else
    if @b3='2'  select @Res=' два'+@Res else
    if @b3='3'  select @Res=' три'+@Res else
    if @b3='4'  select @Res=' четыре'+@Res else
    if @b3='5'  select @Res=' пять'+@Res else
    if @b3='6'  select @Res=' шесть'+@Res else
    if @b3='7'  select @Res=' семь'+@Res else
    if @b3='8'  select @Res=' восемь'+@Res else
    if @b3='9'  select @Res=' девять'+@Res
    if @b2='2'  select @Res=' двадцать'+@Res else
    if @b2='3'  select @Res=' тридцать'+@Res else
    if @b2='4'  select @Res=' сорок'+@Res else
    if @b2='5'  select @Res=' пятьдесят'+@Res else
    if @b2='6'  select @Res=' шестьдесят'+@Res else
    if @b2='7'  select @Res=' семьдесят'+@Res else
    if @b2='8'  select @Res=' восемьдесят'+@Res else
    if @b2='9'  select @Res=' девяносто'+@Res
  end
    if @b1='1'  select @Res=' сто'+@Res else
    if @b1='2'  select @Res=' двести'+@Res else
    if @b1='3'  select @Res=' триста'+@Res else
    if @b1='4'  select @Res=' четыреста'+@Res else
    if @b1='5'  select @Res=' пятьсот'+@Res else
    if @b1='6'  select @Res=' шестьсот'+@Res else
    if @b1='7'  select @Res=' семьсот'+@Res else
    if @b1='8'  select @Res=' восемьсот'+@Res else
    if @b1='9'  select @Res=' девятьсот'+@Res
Select @a1=Substring(@a1,1,datalength(@a1)-3)
Select @a2=Right(@a1,3)
Select @b1=Substring(@a2,1,1)
Select @b2=Substring(@a2,2,1)
Select @b3=Substring(@a2,3,1)
if @b3 = '0' and @b2 = '0' and @b1 = '0'
 select @res = @res
else
begin
 if @b3='1' and @b2<>'1' 
  select @Res=' тысяча'+@Res 
 else if @b3 in ('2','3','4') and @b2<>'1' 
  select @Res=' тысячи'+@Res
 else if @a2 <> '   '
  select @Res=' тысяч'+@Res
end
if @b2='1' 
  begin
    if @b3='0'  select @Res=' десять'+@Res else
    if @b3='1'  select @Res=' одиннадцать'+@Res else
    if @b3='2'  select @Res=' двенадцать'+@Res else
    if @b3='3'  select @Res=' тринадцать'+@Res else
    if @b3='4'  select @Res=' четырнадцать'+@Res else
    if @b3='5'  select @Res=' пятнадцать'+@Res else
    if @b3='6'  select @Res=' шестнадцать'+@Res else
    if @b3='7'  select @Res=' семнадцать'+@Res else
    if @b3='8'  select @Res=' восемнадцать'+@Res else
    if @b3='9'  select @Res=' девятнадцать'+@Res
  end
else
  begin
    if @b3='1'  select @Res=' одна'+@Res else
    if @b3='2'  select @Res=' две'+@Res else
    if @b3='3'  select @Res=' три'+@Res else
    if @b3='4'  select @Res=' четыре'+@Res else
    if @b3='5'  select @Res=' пять'+@Res else
    if @b3='6'  select @Res=' шесть'+@Res else
    if @b3='7'  select @Res=' семь'+@Res else
    if @b3='8'  select @Res=' восемь'+@Res else
    if @b3='9'  select @Res=' девять'+@Res
    if @b2='2'  select @Res=' двадцать'+@Res else
    if @b2='3'  select @Res=' тридцать'+@Res else
    if @b2='4'  select @Res=' сорок'+@Res else
    if @b2='5'  select @Res=' пятьдесят'+@Res else
    if @b2='6'  select @Res=' шестьдесят'+@Res else
    if @b2='7'  select @Res=' семьдесят'+@Res else
    if @b2='8'  select @Res=' восемьдесят'+@Res else
    if @b2='9'  select @Res=' девяносто'+@Res
  end
    if @b1='1'  select @Res=' сто'+@Res else
    if @b1='2'  select @Res=' двести'+@Res else
    if @b1='3'  select @Res=' триста'+@Res else
    if @b1='4'  select @Res=' четыреста'+@Res else
    if @b1='5'  select @Res=' пятьсот'+@Res else
    if @b1='6'  select @Res=' шестьсот'+@Res else
    if @b1='7'  select @Res=' семьсот'+@Res else
    if @b1='8'  select @Res=' восемьсот'+@Res else
    if @b1='9'  select @Res=' девятьсот'+@Res
-- миллионы
Select @a1=Substring(@a1,1,datalength(@a1)-3)
Select @a2=Right(@a1,3)
Select @b1=Substring(@a2,1,1)
Select @b2=Substring(@a2,2,1)
Select @b3=Substring(@a2,3,1)
if @b3 = '0' and @b2 = '0' and @b1 = '0'
 select @res = @res
else
begin
if @b3='1' and @b2<>'1' 
 select @Res=' миллион' +@Res
else if @b3 in ('2','3','4') and @b2<>'1' 
 select @Res=' миллиона'+@Res
else if @a2 <> '   '
 select @Res=' миллионов'+@Res
end
if @b2='1' 
  begin
    if @b3='0'  select @Res=' десять'+@Res else
    if @b3='1'  select @Res=' одиннадцать'+@Res else
    if @b3='2'  select @Res=' двенадцать'+@Res else
    if @b3='3'  select @Res=' тринадцать'+@Res else
    if @b3='4'  select @Res=' четырнадцать'+@Res else
    if @b3='5'  select @Res=' пятнадцать'+@Res else
    if @b3='6'  select @Res=' шестнадцать'+@Res else
    if @b3='7'  select @Res=' семнадцать'+@Res else
    if @b3='8'  select @Res=' восемнадцать'+@Res else
    if @b3='9'  select @Res=' девятнадцать'+@Res
  end
else
  begin
    if @b3='1'  select @Res=' один'+@Res else
    if @b3='2'  select @Res=' два'+@Res else
    if @b3='3'  select @Res=' три'+@Res else
    if @b3='4'  select @Res=' четыре'+@Res else
    if @b3='5'  select @Res=' пять'+@Res else
    if @b3='6'  select @Res=' шесть'+@Res else
    if @b3='7'  select @Res=' семь'+@Res else
    if @b3='8'  select @Res=' восемь'+@Res else
    if @b3='9'  select @Res=' девять'+@Res
    if @b2='2'  select @Res=' двадцать'+@Res else
    if @b2='3'  select @Res=' тридцать'+@Res else
    if @b2='4'  select @Res=' сорок'+@Res else
    if @b2='5'  select @Res=' пятьдесят'+@Res else
    if @b2='6'  select @Res=' шестьдесят'+@Res else
    if @b2='7'  select @Res=' семьдесят'+@Res else
    if @b2='8'  select @Res=' восемьдесят'+@Res else
    if @b2='9'  select @Res=' девяносто'+@Res
  end
    if @b1='1'  select @Res=' сто'+@Res else
    if @b1='2'  select @Res=' двести'+@Res else
    if @b1='3'  select @Res=' триста'+@Res else
    if @b1='4'  select @Res=' четыреста'+@Res else
    if @b1='5'  select @Res=' пятьсот'+@Res else
    if @b1='6'  select @Res=' шестьсот'+@Res else
    if @b1='7'  select @Res=' семьсот'+@Res else
    if @b1='8'  select @Res=' восемьсот'+@Res else
    if @b1='9'  select @Res=' девятьсот'+@Res
-- миллиарды
Select @a1=Substring(@a1,1,datalength(@a1)-3)
Select @a2=Right(@a1,3)
Select @b1=Substring(@a2,1,1)
Select @b2=Substring(@a2,2,1)
Select @b3=Substring(@a2,3,1)
if @b3 = '0' and @b2 = '0' and @b1 = '0'
 select @res = @res
else
begin
if @b3='1' and @b2<>'1' 
 select @Res=' миллиард' +@Res
else if @b3 in ('2','3','4') and @b2<>'1' 
 select @Res=' миллиарда'+@Res
else if @a2 <> '   '
 select @Res=' миллиардов'+@Res
end
if @b2='1' 
  begin
    if @b3='0'  select @Res=' десять'+@Res else
    if @b3='1'  select @Res=' одиннадцать'+@Res else
    if @b3='2'  select @Res=' двенадцать'+@Res else
    if @b3='3'  select @Res=' тринадцать'+@Res else
    if @b3='4'  select @Res=' четырнадцать'+@Res else
    if @b3='5'  select @Res=' пятнадцать'+@Res else
    if @b3='6'  select @Res=' шестнадцать'+@Res else
    if @b3='7'  select @Res=' семнадцать'+@Res else
    if @b3='8'  select @Res=' восемнадцать'+@Res else
    if @b3='9'  select @Res=' девятнадцать'+@Res
  end
else
  begin
    if @b3='1'  select @Res=' один'+@Res else
    if @b3='2'  select @Res=' два'+@Res else
    if @b3='3'  select @Res=' три'+@Res else
    if @b3='4'  select @Res=' четыре'+@Res else
    if @b3='5'  select @Res=' пять'+@Res else
    if @b3='6'  select @Res=' шесть'+@Res else
    if @b3='7'  select @Res=' семь'+@Res else
    if @b3='8'  select @Res=' восемь'+@Res else
    if @b3='9'  select @Res=' девять'+@Res
    if @b2='2'  select @Res=' двадцать'+@Res else
    if @b2='3'  select @Res=' тридцать'+@Res else
    if @b2='4'  select @Res=' сорок'+@Res else
    if @b2='5'  select @Res=' пятьдесят'+@Res else
    if @b2='6'  select @Res=' шестьдесят'+@Res else
    if @b2='7'  select @Res=' семьдесят'+@Res else
    if @b2='8'  select @Res=' восемьдесят'+@Res else
    if @b2='9'  select @Res=' девяносто'+@Res
  end
    if @b1='1'  select @Res=' сто'+@Res else
    if @b1='2'  select @Res=' двести'+@Res else
    if @b1='3'  select @Res=' триста'+@Res else
    if @b1='4'  select @Res=' четыреста'+@Res else
    if @b1='5'  select @Res=' пятьсот'+@Res else
    if @b1='6'  select @Res=' шестьсот'+@Res else
    if @b1='7'  select @Res=' семьсот'+@Res else
    if @b1='8'  select @Res=' восемьсот'+@Res else
    if @b1='9'  select @Res=' девятьсот'+@Res
declare @mb char(50), @bb char(50)
select @mb='абвгдеёжзийклмнопрстуфхцчшщьыъэюя'
select @bb='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'
select @i=CharIndex(substring(@Res,1,1),@mb)
select @Res=Substring(@bb,@i,1)+Substring(@Res,2,255)
select @Res=upper(Substring(@Res,1,1)) + Substring(@Res,2, 254)
--select @Res=@Res+' '+Right(convert(varchar(255),abs(@summa)),2)+' коп.'
--select kop
declare @kop varchar(2)
declare @mkop money
declare @suffix varchar(20)
select @kop=right(convert(varchar(255),abs(@summa)),2)
select @mkop=convert(money,@kop)
select @suffix=
case
 when @mkop=0 then 'копеек'
 when @mkop>10 and @mkop<20 then 'копеек'
 when right(@kop,1)='1' then 'копейка'
 when right(@kop,1)>'1' and  right(@kop,1)<'5' then 'копейки'
 else 'копеек'
end
select @Res=@Res+' '+case when @mkop=0 then ' ' else @kop+' '+@suffix end
select @Res= upper(Substring(Ltrim(@Res),1,1)) + Substring(ltrim(@Res),2, 254)
 
return @Res;
end
go
 
declare @t table(id int identity,
                name nvarchar(30),
        price money);
 
insert into @t(name, price)
values (N'Чай', 40),
       (N'Хлеб', 70.85),
      (N'Пива', 14.85)
 
select *, dbo.fnNumberAsPhrase(price) from @t;
1
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,554
20.01.2019, 13:35  [ТС] 6
invm, Огромное вам спасибо
T-SQL
1
2
3
4
5
6
7
8
9
10
11
declare @t table(id int identity,
                name nvarchar(30),
        price money);
 
insert into @t(name, price)
--- Вот здесь можно уже SELECT
select name, price
from DB_1.dbo.T1 --из реального  БД и Таблица...
 
select *, dbo.fnNumberAsPhrase(price) as 'Cумма прописью'
from @t;
Это супер Можно переводить буквы на другом языке.
0
20.01.2019, 13:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2019, 13:35
Помогаю со студенческими работами здесь

Сумма прописью в Access
Помогите, пожалуйста!!! В табл. есть цифровое поле'сумма'. Нужно в отчете вывести его прописью в...

Сумма прописью в отчете
Здравствуйте! Помогите, пожалуйста, сделать чтобы в отчете &quot;СЧЕТ&quot;, в &quot;Оказано услуг на сумму&quot; число...

Какой формат поля выбрать(сумма прописью)
Как сделать чтоб число писалось словами как на картинке

Сумма прописью в условных единицах, 4 знака после запятой
Добрый день пытаюсь переделать функцию прописью под условные единицы. Возникла проблема 0,1000 ...

Дата прописью и сумма прописью
Господа, помогите!! Перерыл весь инет, скачал кучу прог и кодов но не разобрался ни в чем..(( Мне...

Сумма прописью
Как в печатной форме сделать вывод суммы прописью ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru