Sql server 如何在SQL Server中实现CAST(VARBINARY作为NVARCHAR)?

Sql server 如何在SQL Server中实现CAST(VARBINARY作为NVARCHAR)?,sql-server,casting,Sql Server,Casting,我特别指的是如何处理存储过程输入参数。它只是改变了SQLServer解释数据的方式,还是要求SQLServer复制数据 谢谢 每个NVARCHAR字符占用2字节,因此SQL Server将NVARCHAR大小填充到最接近的较大偶数整数: WITH q AS ( SELECT CAST('qqq' AS VARBINARY) vb ) SELECT DATALENGTH(CAST(vb AS NVARCHAR(20))) FROM q

我特别指的是如何处理存储过程输入参数。它只是改变了SQLServer解释数据的方式,还是要求SQLServer复制数据


谢谢

每个
NVARCHAR
字符占用
2
字节,因此
SQL Server
NVARCHAR
大小填充到最接近的较大偶数整数:

WITH    q AS
        (
        SELECT  CAST('qqq' AS VARBINARY) vb
        )
SELECT  DATALENGTH(CAST(vb AS NVARCHAR(20)))
FROM    q

---
  4

“数据副本”是什么意思?这取决于执行计划
SQL Server
即使不进行类型转换,也可以复制整个表(例如,在
即时假脱机中)。

如果将@variableA分配给@variableB,则必须生成与转换相关的副本


如果在查询中使用@变量,则情况会更加复杂,复制是否发生取决于强制转换的上下文。

对不起,我应该澄清一下,我特别指的是存储过程参数。我已经更新了问题。如果是文本,为什么存储为VARBINARY?请参阅我对该问题的回答: