Sql 加密后字符串值丢失

Sql 加密后字符串值丢失,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,在将代码保存到数据库之前,我正在加密我的值 EncryptByKey(Key_GUID('SKEDB_BenName_11'), cast((FirstName + ' ' + Surname) as nvarchar)) , AccountName = EncryptByKey(Key_GUID('SKEDB_BenName_11'),UPPER(LTRIM(RTRIM(@AccountName)))) 当@AccountName字符串长度达到26时,此代码工作正常。如果长度超过26,则

在将代码保存到数据库之前,我正在加密我的值

 EncryptByKey(Key_GUID('SKEDB_BenName_11'), cast((FirstName + ' ' + Surname) as nvarchar)) ,

AccountName = EncryptByKey(Key_GUID('SKEDB_BenName_11'),UPPER(LTRIM(RTRIM(@AccountName))))

当@AccountName字符串长度达到26时,此代码工作正常。如果长度超过26,则它将加密字符串,最大值为26。我希望加密完整值。请建议将默认值设置为30
演员((名字+姓氏)为女皇)

就是

  • 30英寸铸件
  • 1在其他情况下
当数据定义或变量声明语句中未指定n时,默认长度为1。如果未使用CAST函数指定n,则默认长度为30

如果你想达到,比如说100,使用

cast((FirstName + ' ' + Surname) as nvarchar(100)))

这将默认为30
演员((名字+姓氏)为女皇)

就是

  • 30英寸铸件
  • 1在其他情况下
当数据定义或变量声明语句中未指定n时,默认长度为1。如果未使用CAST函数指定n,则默认长度为30

如果你想达到,比如说100,使用

cast((FirstName + ' ' + Surname) as nvarchar(100)))

要踢的坏习惯:声明VARCHAR没有(长度)要踢的坏习惯:声明VARCHAR没有(长度)你的问题有两个不同的EncryptByKey调用。我只修复了一个明显的错误:您的代码不完整,例如,如何生成@AccountName?您的问题有两个不同的EncryptByKey调用。我只修复了一个明显的错误:您的代码不完整,例如,如何生成@AccountName