シナリオ:
文字列をバイナリフィールド(CONTEXT_INFO)に挿入し、後でそれを引き出して文字列に変換しようとしています。私がそうすると、結果の文字列の長さは128になります。これは、末尾にnull文字があるためです。
例:
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
質問:
バイナリフィールドを文字列に変換するときに、末尾のヌル文字をトリミングするにはどうすればよいですか?