gpt4 book ai didi

SQL将十六进制格式的字符串数据转换成字符串文本

转载 作者:行者123 更新时间:2023-12-04 18:08:03 25 4
gpt4 key购买 nike

我有一个包含 X 列的表。X 将以十六进制格式存储大文本值。现在我想将十六进制转换为原始数据并验证数据。但是当我使用下面的查询时,运行查询后我只得到部分文本而不是完整文本。其实原文很大....

select UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW(X)) as a from table name 

我也尝试了下面的查询,但没有用它也提取了相同的内容

decalre @a varchar(max)
select UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW(X)) as new from table name.

请告诉我如何从 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 @result=@result+
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

关于SQL将十六进制格式的字符串数据转换成字符串文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com