Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2018, 11:57   #1
AvatarGenesis
Новичок
Джуниор
 
Регистрация: 22.11.2018
Сообщений: 1
Сообщение Переделать запрос

Здравствуйте, помогите пожалуйста переделать запрос.
Нужно чтобы он это делал с цифрами , и тип данных был int , а не varchar
Задание: Дано целое положительное число. Необходимо удалить из числа цифры, повторяющиеся
больше всего раз
Код:
Declare @s varchar(100), @i int, @k0 int, @k1 int, @k2 int, @k3 int, @k4 int, @k5 int, @k6 int, @k7 int, @k8 int, @k9 int, @max int
Select @s=2121430000000000000000000009584, @i=1, @k0=0, @k1=0, @k2=0, @k3=0, @k4=0, @k5=0, @k6=0, @k7=0, @k8=0, @k9=0 

While @i<=Len(@s) 
begin 
if Substring(@s,@i,1) like '[0]' Select @k0=@k0+1 
if Substring(@s,@i,1) like '[1]' Select @k1=@k1+1 
if Substring(@s,@i,1) like '[2]' Select @k2=@k2+1 
if Substring(@s,@i,1) like '[3]' Select @k3=@k3+1 
if Substring(@s,@i,1) like '[4]' Select @k4=@k4+1 
if Substring(@s,@i,1) like '[5]' Select @k5=@k5+1 
if Substring(@s,@i,1) like '[6]' Select @k6=@k6+1 
if Substring(@s,@i,1) like '[7]' Select @k7=@k7+1 
if Substring(@s,@i,1) like '[8]' Select @k8=@k8+1 
if Substring(@s,@i,1) like '[9]' Select @k9=@k9+1 
Select @i=@i+1 
end 

select @max=max(t.a) from
(
select @k0 as a
union select @k1
union select @k2
union select @k3
union select @k4
union select @k5
union select @k6
union select @k7
union select @k8
union select @k9
) as t

if @max=@k0 Select REPLACE (@s,'0','')
if @max=@k1 Select REPLACE (@s,'1','')
if @max=@k2 Select REPLACE (@s,'2','')
if @max=@k3 Select REPLACE (@s,'3','')
if @max=@k4 Select REPLACE (@s,'4','')
if @max=@k5 Select REPLACE (@s,'5','')
if @max=@k6 Select REPLACE (@s,'6','')
if @max=@k7 Select REPLACE (@s,'7','')
if @max=@k8 Select REPLACE (@s,'8','')
if @max=@k9 Select REPLACE (@s,'9','')

select @s
AvatarGenesis вне форума Ответить с цитированием
Старый 22.11.2018, 12:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

[OFFTOP]

Цитата:
Сообщение от AvatarGenesis Посмотреть сообщение
Дано целое положительное число. Необходимо удалить из числа цифры, повторяющиеся
больше всего раз
тут уже неоднократно были задачи на разбор целого числа.

Очевидно, что кроме "умения жонглировать ногами", подобные хакерские приёмы ничему не учат и никакого отношения к реальной практической жизни не имеют.
Мне интересно, это один ВУЗ/преподаватель воплощает в жизнь свои странные взгляды на суть SQL запросов или это такая тенденция в современной образовательном процессе из рубрики - "Вот тебе лом, подмети плац" ?!

[/OFFTOP]
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать запрос Брунгвильда SQL, базы данных 1 28.04.2016 17:05
Переделать запрос из access на sql server Barmsl SQL, базы данных 11 14.11.2013 08:54
ПЕРЕДЕЛАТЬ ЗАПРОС ИЗ ACCESS в ADOQuery cokolik БД в Delphi 2 12.02.2011 18:38
Переделать код с Delphi на C#. Post запрос и т.д. Casper-SC Общие вопросы .NET 3 07.05.2010 02:26
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09