На PORTA.ru
ОГРОМНЫЙ выбор портативной техники:
MD-плееры CD-плееры MP3-плееры Кассетные плееры Диктофоны Радио Цифр. камеры Сотовые Дешевые ноутбуки |
||
SQL вариант перевода 36->10 и обратно 36->10
CREATE PROCEDURE [Convert36To10] @Res36 CHAR(9), @Deci INT OUTPUT AS SET NOCOUNT ON DECLARE @j INT DECLARE @Arr36 CHAR(36) SELECT @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SELECT @Deci = 0 SELECT @j = 1 while @j <= LEN(LTRIM(RTRIM(@Res36))) begin if @j <> 1 SELECT @Deci = @Deci*36 SELECT @Deci = @Deci + CHARINDEX(SUBSTRING(LTRIM(RTRIM(@Res36)), @j,1),@Arr36) -1 SELECT @j = @j+1 end Обратно: CREATE PROCEDURE [Convert10To36] @Deci INT, @Res36 CHAR(9) OUTPUT AS SET NOCOUNT ON DECLARE @j INT DECLARE @Arr36 CHAR(36) SELECT @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SELECT @Res36 = '' SELECT @j = LOG(@Deci)/LOG(36) +1 while @j>0 begin SELECT @Res36 = LTRIM(RTRIM(@Res36)) + SUBSTRING(@Arr36, @Deci/POWER(36,@j-1) +1 ,1) SELECT @Deci = @Deci%POWER(36,@j-1) SELECT @j =@j-1 end <Взято с sql.ru Сообщил genie_vats> -
Наверх -
|
В качестве благодарности за решение проблемы, щелкните здесь. Поддержите развитие сайта. Спасибо! |
Автор и разработчик: Кайгородов Андрей aka mszsuz. mszsuz@online.sinor.ru ICQ#33993114. Дата последнего обновления страницы: Friday 09.04.2004 16:52 |