串联似乎无法工作

  • 本文关键字:工作 sql sql-server tsql
  • 更新时间 :
  • 英文 :


我哪里做错了?

我正试图写一个简单的过程,将加密字符串转换为Unicode数字的连接字符串。这最终将是一个接收@EncryptedString作为输入的函数。

当我执行此命令时,第一个print语句为@EncryptedString中的每个字符生成七个字符的字符串消息,但其他两个print语句只产生空字符串消息,而不是连接的@UnicodeString

我意识到这是用一种非常过程化的风格编写的,但它很少会被使用,而且我是一个使用更面向批处理方法的初学者。

谢谢大家的帮助。

declare @EncryptedString varchar(20)='†‚x†ˆ‹‡}‹ƒ†‚x†ˆ‹‡}‹ƒ'
declare @UnicodeString varchar(140)=''
declare @i int=0
while (@i < len(@EncryptedString)+1)
begin
print right('0000000'+convert(varchar(7),unicode(substring(@EncryptedString,@i,1))),7)--FOR TESTING
set @UnicodeString=@UnicodeString+right('0000000'+convert(varchar(7),unicode(substring(@EncryptedString,@i,1))),7)
print @UnicodeString--FOR TESTING
set @i=@i+1
end
print @UnicodeString--FOR TESTING

不知道你想做什么,但nvarchar是SQL Server中的unicode字符串类型,unicode字面量以N开始。所以至少:

declare @EncryptedString nvarchar(20)= N'†‚x†ˆ‹‡}‹ƒ†‚x†ˆ‹‡}‹ƒ'
declare @UnicodeString nvarchar(140)= N''
declare @i int=0
while (@i < len(@EncryptedString)+1)
begin
print right('0000000'+convert(nvarchar(7),unicode(substring(@EncryptedString,@i,1))),7)--FOR TESTING
set @UnicodeString=concat(@UnicodeString,right('0000000'+convert(nvarchar(7),unicode(substring(@EncryptedString,@i,1))),7))
print @UnicodeString--FOR TESTING
set @i=@i+1
end
select @UnicodeString--FOR TESTING

HABO,你的答案就是答案。

我不知道为什么,但我默认了@i=0,而它应该是1。我看了100遍,也没看到我输入错了什么。

就是这样。

谢谢。

相关内容

  • 没有找到相关文章

最新更新