刚刚注意到这一点,并且很难想出一个技术原因。
可以使用三个部分名称删除表,但视图仅限于两个部分名称。
这背后的原因是什么?
我已经多次遇到过这种情况,我相信这是有充分理由的 - 但我该如何避免呢?
我确定这与周围的怪癖有关isnumeric。在英语中,我有一个过滤isnumeric(somefield) = 1. 然后我尝试int在我的where子句中使用 an 来查询它,因为表中的其他一些字段有字符值,所以整个事情都失败了。
我创建了一个显示错误的SQL 小提琴。
我尝试cast/convert在视图的 select 中执行 a ,但查询引擎似乎忽略了它。
那么 - 为什么会发生这种情况,有没有一种干净的方法来处理它?
由于我在插入物上缺少引号,原始小提琴有一个非常相似的错误。这不是我试图强调的问题。我通过为所有插入的值添加引号来修复视图。
现有设置 SQL Server 2005 带有标准 EAV 表,用户希望使用 BI 工具 (Cognos) 对其进行切片和切块。
有没有希望我们可以将这些数据转换成我们可以报告的格式?谷歌让我相信没有希望。我愿意相信某种解决方案已经存在。
我只是想了解为什么会发生这种情况,而我的 Google 搜索失败了。我们使用的是 SQL Server 2016 SP1。
这是这种情况:供应商表通过跟踪每个表的当前值来管理 ID。如果您正在执行插入操作,则可以调用一个函数来返回一个 ID 块。
因此,我们通过使用从真实表中选择来设置临时表select into(我们正在克隆一组数据,以使用不同的属性集重新插入)。
然后我们调用该函数并获取记录数的新 id(它只返回最大 ID,因此我们进行一些数学运算以获取下一个 id)。
然后我们更新表格:
update #temp set @nextId = Id = @nextId + 1
Run Code Online (Sandbox Code Playgroud)
期望它会为每条记录递增 1 并设置 id。
相反,为每 4 条记录设置相同的 ID,然后它会递增,接下来的 4 条会得到下一个 id,等等。为什么每 4 条记录?什么地方出了错?
更有趣的是,如果我们在表上放置一个聚集索引,一切都会正常进行。
我确定这与表是堆有关……但不知道为什么。