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

Откуда: Минск
Сообщений: 1838
Добрый день.
Есть ли в T-SQL возможность задавать двоичный литерал?
DECLARE
	@A INT

SET @A = '?x1101'

SELECT @A

Чтобы результатом было 13
Есть ли встроенная функция получающая значение определенного бита?
1 окт 13, 12:01    [14905827]     Ответить | Цитировать Сообщить модератору
 Re: Двоичный литерал  [new]
qwerty112
Guest
X-Cite,

побитовые операции - есть
а "двоичный литерал", для этого совсем и не нужен ...
set nocount on

declare @i int
set @i = 0
while @i<4
begin
	select @i as num_bit, sign(13 & power(2,@i)) as value_bit
	set @i = @i+1
end

num_bit     value_bit
----------- -----------
0           1

num_bit     value_bit
----------- -----------
1           0

num_bit     value_bit
----------- -----------
2           1

num_bit     value_bit
----------- -----------
3           1
1 окт 13, 12:19    [14905964]     Ответить | Цитировать Сообщить модератору
 Re: Двоичный литерал  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
qwerty112
X-Cite,

побитовые операции - есть
а "двоичный литерал", для этого совсем и не нужен ...
set nocount on

declare @i int
set @i = 0
while @i<4
begin
	select @i as num_bit, sign(13 & power(2,@i)) as value_bit
	set @i = @i+1
end

num_bit     value_bit
----------- -----------
0           1

num_bit     value_bit
----------- -----------
1           0

num_bit     value_bit
----------- -----------
2           1

num_bit     value_bit
----------- -----------
3           1

qwerty112
побитовые операции -

Про это в курсе.
qwerty112
а "двоичный литерал", для этого совсем и не нужен ...

Ну мне удобно задать начальное значение например ?x1101 а не 13

А за вариант SIGN(13 & POWER(2, 1)) спасибо, правда я ожидал встроенную функцию типа dbo.GetBit(13, 1) которая вернет 1 или 0 :)
Хотя, наверное, хранить битовую маску в строке будет удобнее, она не ограничена 64 степенью.
1 окт 13, 12:37    [14906175]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить