sql >> データベース >  >> RDS >> Sqlserver

SQLは16進形式の文字列データを文字列テキストに変換します

    MS-SQL 2008 の場合、次のストアド プロシージャは 16 進文字列を 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. SQL Serverエラー110:INSERTステートメントには、VALUES句で指定された値よりも少ない列があります。

    2. 名前を名前とイニシャルに分割する方法

    3. Chart.js-mysqlとphpを使用してデータベースからデータを取得する

    4. SQLiteデータベース内のすべてのインデックスを一覧表示します