sql >> Databasteknik >  >> RDS >> Sqlserver

SQL konvertera strängdata i hexadecimalt format till strängtext

För MS-SQL 2008 konverterar följande lagrade proc en hex-sträng till en varchar(max):

if exists (select * from dbo.sysobjects where name = 'f_hextostr' and xtype = 'FN')
drop function [dbo].[f_hextostr]
GO

CREATE FUNCTION [dbo].[f_hextostr] (@hexstring VARCHAR(max))
RETURNS VARCHAR(max)

AS

begin
 declare @char1 char(1), @char2 char(1), @strlen int, @currpos int, @result varchar(max)
 set @strlen=len(@hexstring)
 set @currpos=1
 set @result=''
 while @currpos<@strlen
  begin
   set @char1=substring(@hexstring,@currpos,1)
   set @char2=substring(@hexstring,@currpos+1,1)
   if (@char1 between '0' and '9' or @char1 between 'A' and 'F')
    and (@char2 between '0' and '9' or @char2 between 'A' and 'F')
    set @[email protected]+
     char((ascii(@char1)-case when @char1 between '0' and '9' then 48 else 55 end)*16+
     ascii(@char2)-case when @char2 between '0' and '9' then 48 else 55 end)
   set @currpos = @currpos+2
  end
 return @result
end
GO

För att använda bara gör något i stil med:

select dbo.f_hextostr('0x3031323')

eller

select dbo.f_hextostr(X) from MyTable


  1. Hur får man data från 4 tabeller i 1 sql-fråga?

  2. FEL:Kunde inte läsa rad 0, kol -1 från CursorWindow. Se till att markören är korrekt initierad innan du kommer åt data

  3. TSQL Pivot utan aggregatfunktion

  4. Så här löser du org.postgresql.jdbc.PgConnection.createClob() är ännu inte implementerat