Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
Как перевести строку '0x3f' в тип int?
16 мар 04, 11:32    [579773]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
create table #t (v int)
insert into #t exec ('select 0x3f')
select * from #t
drop table #t
16 мар 04, 11:53    [579858]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
exec('select cast('+'0x3f'+' as int)')
16 мар 04, 11:53    [579861]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
Спасибо!
16 мар 04, 12:06    [579906]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
А можно ли обойтись без временной таблицы?
16 мар 04, 12:22    [579966]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
А можно ли обойтись без временной таблицы?

А зачем она Вам нужна?
16 мар 04, 12:23    [579969]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
А как иначе получить результат в переменную?
16 мар 04, 12:32    [579998]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
А как иначе получить результат в переменную?

FAQ
16 мар 04, 12:34    [580014]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
Спасибо, не знал о sp_executesql
16 мар 04, 12:44    [580061]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
А можно без sp_executesql? Дело в том, что она не работает в scalar-valued function
16 мар 04, 12:54    [580102]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
можно ... распарсить и помножить на 16^n
16 мар 04, 12:57    [580113]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
Crimean
Member

Откуда:
Сообщений: 13148
create procedure #xxp

@a varbinary(4), @b int out
as
select @b = @a
go

declare @i int

exec #xxp 0x03, @i out

select @i
go

drop procedure #xxp
go


P.S.Зачем-то же они нужны :)
16 мар 04, 13:04    [580146]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
2Crimean
'0x03' и 0x03


без кавычек если - то и так ничего делать не надо чтоб к int привести..
cast as int и все.
а вот с кавычками - похуже..
16 мар 04, 13:09    [580166]     Ответить | Цитировать Сообщить модератору
 Re: cast  [new]
motherfucker
Member

Откуда: development
Сообщений: 15
Может кому понадобиться


SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

create function dbo.hex2dec
(@hex varchar(10))
returns int
as
begin
declare @c char
declare @ci int
declare @pos int
declare @result int

set @pos = 1
set @result = 0
while @pos <= len(@hex)
begin

set @c = substring(@hex, @pos, 1)

if(ascii(@c) < ascii('0') or ascii(@c) > ascii('9'))
begin
set @ci = ascii(@c) - ascii('a') + 10
end else begin
select @ci = cast(@c as int)
end

set @result = @result + @ci * power(16, len(@hex) - @pos)

set @pos = @pos + 1
end

return @result
end



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


16 мар 04, 14:36    [580477]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить