MSSql - 选择语句不适用于所有列

Posted

技术标签:

【中文标题】MSSql - 选择语句不适用于所有列【英文标题】:MSSql - Select statement not working on all columns 【发布时间】:2020-05-11 11:39:33 【问题描述】:

在 mssql Management Studio 中,当我右键单击 -> 选择所有行时,它会自动生成一个 select 语句并执行它以显示表的内容。在一个特定的表中,它不起作用。它说这些列不存在.. select 语句的所有列都在括号之间,如下所示:

SELECT [col1]
  ,[col2]
  ,[col3]
  ,[col4]
  ,[col5]
FROM [Line01].[dbo].[QtyInfo]

在此特定查询中,新添加的第 4 列和第 5 列不起作用。为了使它们起作用,我必须在没有括号的情况下编写它。 像这样:

SELECT [col1]
  ,[col2]
  ,[col3]
  ,col4
  ,col5
FROM [Line01].[dbo].[QtyInfo]

为什么这只发生在某些特定的表上?

【问题讨论】:

这很奇怪。自动生成的代码应该是正确的。 “不工作”是什么意思? " 它说该列不存在" 恕我直言,我不相信。 Col4[Col4] 是同义词,如果名称为 Col4 的列不存在,则两个语句都会产生相同的错误:Invalid column name 'col4'. 方括号 ([]) 只是分隔标识符。就像把东西放在引号里 (")。 “在 IDE 中” 那么你还没有刷新智能感知(可能还有对象资源管理器)。 Intellisense 不会不断刷新(这会给服务器带来巨大负担),您必须手动刷新它。 @sharkyenergy - 按 ctrl + shift + R 刷新 IntelliSense 本地缓存。它将检测最近的更改并应识别列。 【参考方案1】:

Intellisense 是一项非常有用的功能,它是多个 Microsoft 产品的一部分,例如 SQL Server Management Studio、Visual Studio 等。它通过在您键入代码时添加自动完成建议菜单来帮助减少搜索表名和列以及其他数据库对象的时间。

验证 Intellisense 是否已启用:

为了检查 SQL Server Management Studio Intellisense 是否正常工作,我们需要检查的第一件事是 IntelliSense 是否已启用。为此,我们需要执行以下步骤:

    转到Tools > Options

    然后导航到Text Editor > Transact-SQL > IntelliSense

    确保选中所有复选框,以便 IntelliSense 的所有功能都已启用并正常工作

刷新智能感知:

为了刷新 IntelliSense,我们必须执行以下两个选项之一:

在查询窗口中,确保按以下组合键:CTRL+SHIFT+R 转到Edit > IntelliSense > Refresh Local Cache

【讨论】:

以上是关于MSSql - 选择语句不适用于所有列的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL 通过分类树,任意选择分类,查询分类下的所有产品.求高效SQL语句

检测是不是缺少一个月并使用选择语句(MSSQL)自动插入它们

禁用列排序不适用于多个 angularjs 数据表

选择除 div 之外的所有元素不适用于 jQuery

为什么正则表达式setminus运算符不适用于MySQL?

SELECT 语句中的列别名不适用于 SQuirrel SQL + Firebird