bestsource

SQL Server에서 varbinary를 문자열로 변환하는 중

bestsource 2023. 8. 7. 22:45
반응형

SQL Server에서 varbinary를 문자열로 변환하는 중

에서 T-SQL로 변환하고 싶습니다.varbinarytype to string type

다음은 예입니다.

처음엔 내가 이걸 얻었소varbinary

0x21232F297A57A5A743894A0E4A801FC3

그런 다음 이를 다음으로 변환합니다.

21232f297a57a5a743894a0e4a801fc3

어떻게 하는 거지?

시도:

DECLARE @varbinaryField varbinary(max);
SET @varbinaryField = 0x21232F297A57A5A743894A0E4A801FC3;

SELECT CONVERT(varchar(max),@varbinaryField,2), 
@varbinaryField

업데이트됨: SQL Server 2008용

이것이 오래된 질문이라는 것을 알지만, 일부 상황에서 더 유용하다는 것을 알게 된 대안적인 접근법이 있습니다.master.dbo.fn_varbintohexstr 함수는 적어도 SQL2K 이후부터 SQL Server에서 사용할 수 있었다고 생각합니다. 여기에 완전성을 위해 추가합니다.일부 독자는 이 함수의 소스 코드를 살펴보는 것이 유용할 수도 있습니다.

declare @source varbinary(max);
set @source = 0x21232F297A57A5A743894A0E4A801FC3;
select varbin_source = @source
,string_result = master.dbo.fn_varbintohexstr (@source)

단일 항목을 변환하려는 경우VARBINARY에 가치를 두는.VARCHAR(STRING) 다음과 같은 변수를 선언하여 수행할 수 있습니다.

DECLARE @var VARBINARY(MAX)
SET @var = 0x21232F297A57A5A743894A0E4A801FC3
SELECT CAST(@var AS VARCHAR(MAX))

테이블 열에서 선택하려는 경우 다음과 같이 할 수 있습니다.

SELECT CAST(myBinaryCol AS VARCHAR(MAX))
FROM myTable

이 기능은 SQL 2005 및 2008에서 모두 작동합니다.

declare @source varbinary(max);
set @source = 0x21232F297A57A5A743894A0E4A801FC3;
select cast('' as xml).value('xs:hexBinary(sql:variable("@source"))', 'varchar(max)');

저는 모든 곳을 찾아 답을 찾았고 마침내 이것이 저에게 효과가 있었습니다.

SELECT Lower(Substring(MASTER.dbo.Fn_varbintohexstr(0x21232F297A57A5A743894A0E4A801FC3), 3, 8000))

출력 대상(문자열):

2232f297a57a5a743894a0e4a801fc3

VARY 레코드를 문자열과 비교/일치시키고 싶은 경우에도 WHERE 또는 JOIN 조건에서 사용할 수 있습니다.

다음은 2가지 변환 방법을 사용하여 변환 및 다시 변환하기 위해 작성한 간단한 예입니다. 고정 문자열로도 확인했습니다.

@VB1 VARB 선언INARY(500), @VB2 VARBINARY(500),@VB3VARBINARY(500)

@S1 VARCHAR(500) 선언

설정 @VB1=해시바이트('SHA1', '테스트')

SET @S1=SV(varchar(500),@VB1,2)

설정 @VB2=변환(가변(500),@S1,2)

설정 @VB3=변환(변수(500), '640AB2B)AE07BEDC4C163F679A746F7AB7FB5D1FA',2)

@VB1,@S1,@VB2,@VB3를 선택합니다.

IF @VB1=@VB2 인쇄 '일치(2)'

IF @VB1=@VB3 인쇄 '일치(3)'

PRINT str(Len(@VB1)

PRINT str(Len(@S1)

PRINT str(Len(@VB2)

설정 @VB1=해시바이트('SHA1', '테스트')

SET @S1=SB(varchar(500),@VB1,1)

설정 @VB2=변환(가변(500),@S1,1)

@VB1,@S1,@VB2를 선택합니다.

IF @VB1=@VB2 인쇄 '일치(1)'

PRINT str(Len(@VB1)

PRINT str(Len(@S1)

PRINT str(Len(@VB2)

및 산출물

0x1200AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA|640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA|0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA|0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA

(1열 영향)

일치하는 항목(2)

일치하는 항목(3)

    20
    40
    20

0x1200AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA|0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA|0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA

(1열 영향)

일치하는 항목(1)

    20
    42
    20

언급URL : https://stackoverflow.com/questions/12139073/sql-server-converting-varbinary-to-string

반응형