![]() |
#6 |
Участник
|
SQL.RU помог
![]() Решение: Код: create FUNCTION dbo.fnBinaryToInt (@Bin varbinary(4)) RETURNS int AS BEGIN if Len(@Bin)<4 set @Bin=SUBSTRING(@Bin+0x00000000,1,4) RETURN CONVERT(int, Convert(binary(4), REVERSE(CONVERT(char(4), @Bin)))) END go create function dbo.fnSIDToStrSID(@sid as varbinary(85)) returns varchar(119) AS BEGIN --SET NOCOUNT ON declare @ssid varchar(119), @SAC tinyint, @i as tinyint, @b4 as binary(4) set @ssid='S-'+LTRIM(STR(cast(SUBSTRING(@sid,1,1) as tinyint)))+'-'+LTRIM(cast(CONVERT(bigint, 0x0000+SUBSTRING(@sid,3,6)) as varchar(64))) set @SAC=cast(SUBSTRING(@sid,2,1) as tinyint) set @i=0 while @i<@SAC begin set @b4=SUBSTRING(@sid,@i*4+9,4) set @ssid=@ssid+'-'+LTRIM(STR(dbo.fnBinaryToInt(@b4))) set @i=@i+1 end --select master.dbo.fn_varbintohexstr(@sid) HexSID, @ssid StrSID return @ssid END |
|