gpt4 book ai didi

sql-server - 将 CONTEXT_INFO 转换为 varchar 以及结果长度

转载 作者:行者123 更新时间:2023-12-02 09:31:21 27 4
gpt4 key购买 nike

我正在尝试使用 CONTEXT_INFO 将用户代码从存储过程传递到 DELETE 触发器中以进行表审核。

一切正常,但我注意到审计表中保存的用户代码的长度不正确。

以此脚本为例...

declare @userCode varchar(50)
set @userCode = 'TestUser'

declare @binary_userCode varbinary(128)
set @binary_userCode = cast(@userCode as varbinary(128))
set CONTEXT_INFO @binary_userCode

declare @temp_userCode varchar(50)
set @temp_userCode = (select cast(CONTEXT_INFO() as varchar(50)))

--set @temp_userCode = rtrim(ltrim(@temp_userCode))

select @userCode, len(@userCode), @temp_userCode, len(@temp_userCode)

set CONTEXT_INFO 0x

结果:

len(@userCode) = 8

len(@temp_userCode) = 50

为什么 @temp_userCode 变量返回的长度为 50,如何将其修剪回原始长度以正确存储?

更多信息:

运行 SQL Server 2005,但是该解决方案需要在 2005 及之后的所有版本中运行。

最佳答案

当分配给CONTEXT_INFO时,它会用空字节0x00填充,长度为128字节,并变为0x5465737455736572000000...

>

你可以使用

REPLACE(CAST(CONTEXT_INFO() AS varchar(128)) COLLATE Latin1_General_100_BIN , 
0x00,
'')

关于sql-server - 将 CONTEXT_INFO 转换为 varchar 以及结果长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434662/

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