Значение псевдо-набора битов - это когда у вас есть целое число или строка, которая при выборе или печати выглядит как набор битов.Примерно так:
DECLARE @bits varchar(8) = '1010'
SELECT Right(8, REPLICATIE('0', 8) + @bits
Value returned: 00001010
Для этого типа набора битов вы должны помнить, что вы не устанавливаете биты, а вместо этого представляете биты, и вам необходимо установить представление битов втак же.Например, приведенная ниже функция может использоваться для установки битов в строковом представлении вашей цепочки битов:
CREATE FUNCTION dbo.SetBitInString
(
@Source char(8),
@Position int,
@Action char(1) = 'S',
@Value bit = NULL
)
RETURNS Char(8)
AS
BEGIN
DECLARE @work Char(8) = '00000000'
SET @work = Right(@work + ISNULL(LTRIM(RTRIM(@Source)), ''), 8)
SET @Work =
CASE @Action
WHEN 'S'-- Set
THEN Stuff(@Work, @Position, 1, '1')
WHEN 'R' -- Reset
THEN Stuff(@Work, @Position, 1, '0')
WHEN 'X' -- XOR value with position
THEN STUFF(@Work, @Position, 1, CAST(CAST(SubString(@Work, @Position, 1) as int) ^ ISNULL(@Value, 0) as CHAR(1)))
WHEN 'Q'
THEN '1'
---- add other options as needed - this is a quick example.
ELSE @Action
END
IF (@Action = @Work)
RAISERROR('Bad Action (%s) Submitted', 13, 1, @Action)
RETURN @Work
END
Чтение бит - это простая ПОДПИСЬ.Константы могут быть определены для значения каждого бита (например, DECLARE @ShowTotalPrice = 4 -- The 4th bit is the Show Total Price flag
)
. Этого должно быть достаточно для продолжения, если вы хотите использовать этот стиль настройки, где отображаемое значение - это ваш битрейт, представленный в 1 с.и 0s.