시나리오 : 내가 진 필드 (CONTEXT_INFO)에 문자열을 삽입하고 나중에 그것을 밖으로 끌어와 문자열로 다시 변환을 시도하고오른쪽 트리밍 이진 데이터 SQL Server의
. 내가 할 때 결과 문자열은 뒤에 오는 널 문자가 있기 때문에 길이가 128입니다.
예 :
DECLARE @string VARCHAR(128)
DECLARE @binary VARBINARY(128)
SET @string = 'abcdefg'
SET @binary = CONVERT(VARBINARY(128), @string) --0x61626364656667000000...
SET CONTEXT_INFO @binary
SET @binary = CONTEXT_INFO()
-- I would like to change the following line so it trims trailing null chars
SET @string = CONVERT(VARCHAR(128), @binary)
SELECT
@binary AS [binary],
DATALENGTH(@binary) AS [binary.Length], --128 as expected
@string AS [string],
DATALENGTH(@string) AS [string.Length] --This is 128, but I need it to be 7
질문 :
내가 문자열로 이진 필드를 변환 할 때 어떻게 후행 null 문자를 트리밍 할 수 있습니까?
'SUBSTRING (@string, 127, 1)'을'CHAR (0)'으로 대체하는 것이 더 좋을 것이라고 생각하십니까? – Dan
@ 단 : 물론 이죠. – Kaf