Как CAST (VARBINARY AS NVARCHAR) реализован в SQL Server? - PullRequest
1 голос
/ 23 декабря 2009

Я имею в виду, как обрабатываются входные параметры хранимой процедуры. Это просто меняет то, как SQL Server интерпретирует данные, или требует, чтобы SQL Server сделал копию данных?

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 декабря 2009

Если вы назначите @variableA для @variableB, должна появиться копия, не относящаяся к CAST.

Если вы используете @variable в запросе, дела обстоят намного мрачнее, и от того, происходит ли копирование, зависит контекст CAST.

1 голос
/ 24 декабря 2009

Каждый 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) даже без приведения типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...