5>
6> CREATE FUNCTION dbo.bitwise_not
7> (
8> @arg1 varbinary(8)
9> ) RETURNS varbinary(8)
10> AS
11> BEGIN
12> DECLARE
13> @result AS varbinary(8000),
14> @numbytes AS int,
15> @curpos AS int
16> SET @result = 0x
17> SET @numbytes = DATALENGTH(@arg1)
18> SET @curpos = 1
19> WHILE @curpos <= @numbytes
20> BEGIN
21> SELECT
22> @result = @result +
23> CAST(~ CAST(SUBSTRING(@arg1, @curpos, 1)
24> AS tinyint)AS binary(1))
25> SET @curpos = @curpos + 1
26> END
27> RETURN @result
28> END
29> GO
1> GRANT EXECUTE ON dbo.bitwise_not TO public
2> GO
1> SELECT dbo.bitwise_not(0x00000001000000010000000100000001)
2>
3> drop function dbo.bitwise_not
4> GO
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
----------------------------------
0xFFFFFFFEFFFFFFFE
(1 rows affected)