Почему для выполнения HASHBYTES на SQL сервере требуется `FOR XML XXX`? - PullRequest
1 голос
/ 24 марта 2020

Рассмотрим следующий запрос:

SELECT HASHBYTES('MD5', (
    SELECT * FROM dbo.BATCH WHERE batch_key = 22866 FOR XML AUTO))

Работает нормально.

Но следующий запрос:

SELECT HASHBYTES('MD5', (
    SELECT * FROM dbo.BATCH WHERE batch_key = 22866 ))

возвращает следующую ошибку:

Сообщение 116, Уровень 16, Состояние 1, Строка 2
Только одно выражение может быть указано в списке выбора, если подзапрос не введен с EXISTS.

Почему FOR XML XXX требуется для выполнения ха sh?

1 Ответ

2 голосов
/ 24 марта 2020

Это не так. Однако для HASHBYTES требуется одно скалярное значение в качестве входных данных; У вас есть набор результатов, содержащий несколько строк / столбцов, и FOR XML - это один из многих различных способов уменьшить такой набор результатов до одного скалярного значения.

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