如何在SQL Server中实现CAST(VARBINARY AS NVARCHAR)?

时间:2009-12-23 20:23:53

标签: sql-server casting

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

谢谢!

2 个答案:

答案 0 :(得分:1)

每个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也可以复制整个表格(例如,在Eager Spool中)。

答案 1 :(得分:1)

如果将@variableA分配给@variableB,则必须发生一个副本,与CAST相关。

如果在查询中使用@variable,事情就会变得更加模糊,是否出现副本取决于CAST的上下文。