解决方案 »

  1.   

    set @str=N+
      

  2.   

    由于我现在主要是做数据库了,因此以后接触更多的是SQL Server方面的东西。这篇博客主要讲的是SQL Server中的 varchar和varbinay之间相互转换的问题,二进制数据在SQL Server中是作为十六进制显示的,那么这个问题举个栗子就是给你一个例如‘0x12abcd’这样的字符串或者十六进制数据,你要将它转换为‘0x12abcd’对应的十六进制数据或者是字符串,这个问题咋看上去很简单,但做起来是有些难度的(当然大牛除外了),因为考虑到十六进制数据在内存中的存放方式和字符串不一样,所以处理起来要费劲一些。接下来我介绍一种比较简单的方法,首先介绍从varchar数据转换到varbinary数据的方法,这个方法个人觉得比较巧妙,因为它用到了SQL Server中的sp_executesql的方法,它可以方便的帮我们解决眼前的问题。解决办法是这样的:  declare @str nvarchar(1000),@a varbinary(500),@sql nvarchar(max)
      set @str=N'0x12abcd'
      set @sql=N'set @p='+@str+N';'
      exec sp_executesql   @sql,
                 N'@p as varbinary(500) output',
                 @p=@a output
      select  @a
    =======================================
    我是参考上面的内容做的 nvarchar转varbinary
      

  3.   

    把 Convert 前面的 N+ 去掉。
    N'0x12abcd' 中的前缀 N 表示字符串是 nvarchar() 类型,不是变量。