sql-server - 为什么在 SQL Server 中执行 HASHBYTES 需要`FOR XML XXX`?
问题描述
考虑以下查询:
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 ))
返回以下错误:
Msg 116, Level 16, State 1, Line 2
当子查询没有用 EXISTS 引入时,只能在选择列表中指定一个表达式。
为什么FOR XML XXX
需要执行哈希?
解决方案
它不是。但是,HASHBYTES
需要一个标量值作为其输入;您有一个包含多行/多列的结果集,并且FOR XML
是将此类结果集减少为单个标量值的许多不同方法之一。
推荐阅读
- php - 如何在 php Laravel 中的两个表之间创建一对多关系?
- django - TinyMCE 获取 404
- git - git 命令 - 从最近 8 个合并提交中获取所有文件,不包括带有消息“仅提交 Delta 更改 [ci skip]”的提交
- reactjs - React - 从子级到父级的数据 - 设置状态的问题
- python - 模型在保存和加载后表现不同
- c++ - 在 debain 系统中打开文本文件时使用的默认解码方法是什么
- css - 带引导程序 4 的 CSS 翻转卡
- python - 如何使用 prometheus_flask_exporter lib 检查我的指标
- javascript - 无法访问 iframe 中 div 的高度
- ios - 到 NSAttributedString 的 HTML 超链接没有样式