Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL преобразува низови данни в шестнадесетичен формат в низов текст

За MS-SQL 2008 следната съхранена процедура ще преобразува шестнадесетичен низ във 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

За да използвате, просто направете нещо като:

select dbo.f_hextostr('0x3031323')

или

select dbo.f_hextostr(X) from MyTable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за времеви интервали. Синтактични грешки.

  2. Динамично извличане на имена на параметри и текущи стойности в T-SQL съхранена процедура

  3. Формат на колоната за дата на Sql сървъра

  4. Пример за заявка на SQL Server 2008 за създаване на курсор за преминаване през записи

  5. SQL Server - [ИЗБОР] заключва ли [АКТУАЛИЗАЦИЯ]?