通过通配符扩展将星号编辑到 SSMS 中的列名列表中

Edit asterisk symbol into list of column names in SSMS by wildcard expansion

如何将*[星号]改为列名列表?将鼠标光标放在 * 上后,我可以查看列名列表。是否可以单击破解某些东西以将 * 更改为名称,而无需 运行 脚本并将结果插入某些 dbo.temp table?

所以期望的结果是:

with A as (select 
 MyColumn1=1 
,MyColumn2=2 
,MyColumn3=3)

select 
 MyColumn1
,MyColumn2
,MyColumn3
from A

在 SQL Server Management Studio 中,您可以随心所欲。

在屏幕左侧,展开数据库以获取 table 名称。然后,将 table 名称拖到查询窗格中,它将列出所有列。

它称为通配符,在生产代码中使用它是不好的做法。在没有至少 "TOP n" 表达式的情况下对任何内容执行 "SELECT *" 也是不好的做法。

例如,如果您更改它引用的 table 的模式,则必须重建包含通配符的视图才能再次正常运行。

正如 Gordon 所说,您可以使用 UI 或者,我个人更喜欢智能感知列名。

UI 将强制使用方括号,这增强了兼容性,特别是对于以保留关键字命名或以数字开头的对象,例如。

Sql 服务器管理中有一个选项,您可以在其中使用键盘执行存储过程,您可以配置该选项以执行列出 table 列的过程,这是你可以做到的方式:

点击 "Options"

如您所见,有许多键盘快捷键可用于执行存储过程,例如,当您使用快捷键 alt+f1 突出显示 table 的名称时,您可以看到 [=37= 的元数据], 我写了一个存储过程,它显示了用“,”分隔的 table 的列的列表,这是过程:

    Create Procedure [dbo].[NS_rs_columnas]
        @Tabla Sysname,
        @Alias Char(3)=null
    AS
    Begin
        Declare @Colums Nvarchar(Max)='';

        Select 
        @Colums+=','+isnull(Ltrim(Rtrim(@Alias))+'.','')+'['+b.name+']' + CHAR(13)+CHAR(10)
        from sys.tables a
        Inner join sys.all_columns b 
        on (a.object_id=b.object_id)
        Where a.name=ltrim(rtrim(@Tabla));

        Select ' '+Substring(@Colums,2,len(@Colums)-2);
    End

所以你可以做的是配置一个快捷方式来执行该过程。

这是我在 table 名称上按快捷键 ctrl+f1 时的结果:

你可以看到这个程序有两个参数,第二个参数是发送一个别名,这是一个例子:

如果您只是想获取 table(不是 CTE)的完整列列表,您可以这样做:

在 SSMS 中,打开对象资源管理器并找到 Table。右键单击它并选择 "Select Top 1000 Rows"。

它会给你这样的查询:

SELECT TOP (1000) [ColumnName1]
    ,[ColumnName2]
    ,[Column Name 3]
    ...
FROM [databaseName].[schemaName].[TableName]

用方括号括起所有列名称的详尽列表。

将 cte 中的 * 转换为 Management studio 中的列名

  • 使用 ... select * into MyTable from A
  • 创建 table
  • 您可以将 Object Explorer/Databases/MyDb/Tables/MyTable/Columns 拖到您的查询中
  • 或者如果您更喜欢带有 []
  • 的列名,则可以使用 Script table as Select
  • delete MyTable