SQL. Как прописью написать число в SQL
Время чтения - 2 мин.Дата публикации 20.02.2020 (обновлено 12.04.2021)
select [dbo].[as_numPropis] (1234, 1)
Первый параметр число. Второй параметр - род. Если 1, то мужской; если 0, то женский (“один, одна”)
Сама функция:
ALTER function [dbo].[as_numPropis] (@num BIGINT, @isMaleGender bit=1)
returns varchar(255)
as
begin
declare @nword varchar(255), @th tinyint, @gr smallint, @d3 tinyint, @d2
tinyint, @d1 tinyint
if @num<0 return '*** Error: Negative value' else if @num=0 return 'Ноль'
/* особый случай */
while @num>0
begin
set @th=IsNull(@th,0)+1 set @gr=@num%1000 set @num=(@num-@gr)/1000
if @gr>0
begin
set @d3=(@gr-@gr%100)/100
set @d1=@gr%10
set @d2=(@gr-@d3*100-@d1)/10
if @d2=1 set @d1=10+@d1
set @nword=
case @d3
when 1 then ' сто'
when 2 then ' двести'
when 3 then ' триста'
when 4 then ' четыреста'
when 5 then ' пятьсот'
when 6 then ' шестьсот'
when 7 then ' семьсот'
when 8 then ' восемьсот'
when 9 then ' девятьсот'
else ''
end +
case @d2
when 2 then ' двадцать'
when 3 then ' тридцать'
when 4 then ' сорок'
when 5 then ' пятьдесят'
when 6 then ' шестьдесят'
when 7 then ' семьдесят'
when 8 then ' восемьдесят'
when 9 then ' девяносто'
else ''
end +
case @d1
when 1 then (case when @th=2 or (@th=1 and @isMaleGender=0) then ' одна' else ' один' end)
when 2 then (case when @th=2 or (@th=1 and @isMaleGender=0) then ' две' else ' два' end)
when 3 then ' три'
when 4 then ' четыре'
when 5 then ' пять'
when 6 then ' шесть'
when 7 then ' семь'
when 8 then ' восемь'
when 9 then ' девять'
when 10 then ' десять'
when 11 then ' одиннадцать'
when 12 then ' двенадцать'
when 13 then ' тринадцать'
when 14 then ' четырнадцать'
when 15 then ' пятнадцать'
when 16 then ' шестнадцать'
when 17 then ' семнадцать'
when 18 then ' восемнадцать'
when 19 then ' девятнадцать'
else ''
end +
case @th
when 2 then ' тысяч' + (
case
when @d1=1 then 'а'
when @d1 in (2,3,4)
then 'и'
else ''
end)
when 3 then ' миллион'
when 4 then ' миллиард'
when 5 then ' триллион'
when 6 then ' квадрилион'
when 7 then ' квинтилион'
else ''
end +
case
when @th in (3,4,5,6,7) then (
case
when @d1=1 then ''
when @d1 in (2,3,4) then 'а'
else 'ов'
end)
else ''
end
+ IsNull(@nword,'')
end
end
return upper(substring(@nword,2,1))+substring(@nword,3,len(@nword)-2)
end
Что еще посмотреть по SQL Server
Как разрезать строку на части в SQL по некоторому символу
Конвертация из строки в таблицу в SQL Server
Выполнение прямого запроса к URL из SQL
SQL Server Как установить у таблицы описание (MS Description)
Индексы SQL Server. Поиск дубликатов
Запрос для получения SQL всех индексов для таблиц базы данных SQL Server
Как перестроить все индексы на базе SQL Server
Кеширование результата выдачи хранимой процедуры в SQL Server
Как получить текущего юзера БД
Дополнительный заработок для разработчиков на T-SQL
Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта