sql-server – 错误消息中’SET’的含义’通过聚合或其他SET操作消除空值’

前端之家收集整理的这篇文章主要介绍了sql-server – 错误消息中’SET’的含义’通过聚合或其他SET操作消除空值’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天在运行同事的脚本时看到了上面的“ANSI警告”消息(我不知道哪些语句导致警告显示).

在过去,我忽略了它:我自己避免空白,所以任何能消除它们的东西在我的书中都是好事!然而,今天“SET”这个词字面上对我大喊大叫,我意识到我不知道这个词在这个背景下应该是什么意思.

我的第一个想法,基于它是大写的事实,是它指的是SET关键字,意思是’赋值’,如在

UPDATE <table> SET ...

...ON DELETE SET NULL...

SET IDENTITY_INSERT <table> ON

根据sql Server帮助,“ANSI警告”功能基于ISO / ANSI sql-92,其规范仅在子节标题中使用术语“设置操作”,因此在标题情况下,在数据分配部分.但是,在快速搜索错误消息后,我看到的示例是SELECT查询,似乎没有涉及任务.

根据sql Server警告的措辞,我的第二个想法是隐含了set的数学含义.但是,我不认为sql中的聚合严格来说是一个集合操作.即使sql Server团队认为它是一个集合操作,将’set’这个词放在大写字母中的目的是什么?

谷歌搜索时我发现了一条sql Server错误消息:

Table 'T' does not have the identity property. Cannot perform SET operation.

在这里相同的情况下,“SET操作”的相同单词只能引用IDENTITY_INSERT属性的赋值,这让我回想起我的第一个想法.

任何人都可以解释这件事吗?

解决方法

我只是看着 the SQL-92 Specification,看到一段让我想起这个问题.

事实上,对于这种情况存在规定的警告,如下所示

b) Otherwise,let TX be the single-column table that is the
result of applying the <value expression> to each row of T
and eliminating null values. If one or more null values are
eliminated,then a completion condition is raised: warning-
null value eliminated in set function
.

我假设sql Server错误消息中的SET是对该错误消息的set函数的引用,虽然我不确定为什么它会区分聚合和其他set函数,只要我可以看到它们是同义词.语法的相关部分如下.

6.5  <set function specification>

         Function

         Specify a value derived by the application of a function to an
         argument.

         Format

         <set function specification> ::=
                COUNT <left paren> <asterisk> <right paren>
              | <general set function>

         <general set function> ::=
                <set function type>
                    <left paren> [ <set quantifier> ] <value expression> <right paren>


         <set function type> ::=
              AVG | MAX | MIN | SUM | COUNT

         <set quantifier> ::= DISTINCT | ALL
原文链接:https://www.f2er.com/mssql/79671.html

猜你在找的MsSQL相关文章