我特别指的是如何处理存储过程输入参数。它只是改变SQL Server解释数据的方式,还是要求SQL Server复制数据?
谢谢!
答案 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的上下文。