Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL chuyển đổi dữ liệu chuỗi ở định dạng thập lục phân thành văn bản chuỗi

Đối với MS-SQL 2008, proc được lưu trữ sau sẽ chuyển đổi một chuỗi hex thành một 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

Để sử dụng, chỉ cần làm như sau:

select dbo.f_hextostr('0x3031323')

hoặc

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. làm thế nào để chèn datetime vào bảng Cơ sở dữ liệu SQL?

  2. cách nhanh nhất để cập nhật cột varchar bằng văn bản

  3. Chuyển đổi dữ liệu varBinary của SQL Server thành chuỗi C #

  4. Xung đột đối chiếu giữa SQL_Latin1_General_CP1_CI_AS và Modern_Spanish_CI_AS trong hoạt động ngang nhau

  5. Làm cách nào để chọn dữ liệu của một bảng từ một cơ sở dữ liệu khác trong SQL Server?