3

如何将*[星号] 更改为列名列表?将鼠标光标放在*. *是否可以在不运行脚本并将结果插入某个 dbo.temp 表的情况下单击某些内容以更改名称?

在此处输入图像描述

所以期望的结果是:

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

select 
 MyColumn1
,MyColumn2
,MyColumn3
from A
4

5 回答 5

3

在 SQL Server Management Studio 中,您可以做任何您想做的事情。

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

于 2015-12-29T12:05:05.533 回答
2

Sql Server Management 中有一个选项,您可以在其中使用键盘执行存储过程,您可以配置该选项以执行列出表列的过程,您可以这样做:

在此处输入图像描述

点击“选项”

在此处输入图像描述

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

    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

因此,您可以做的是配置一个快捷方式来执行该过程。

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

在此处输入图像描述

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

在此处输入图像描述

于 2015-12-29T17:15:49.107 回答
1

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

  • 使用创建表... select * into MyTable from A
  • 您可以将 Object Explorer / Databases / MyDb / Tables / MyTable / Columns 拖到查询中
  • 或者,Script table as Select如果您更喜欢带有 [] 的列名,则可以使用
  • delete MyTable
于 2020-12-06T06:30:24.760 回答
0

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

在 SSMS 中,打开对象资源管理器并找到表。右键单击它并选择“选择前 1000 行”。

它会给你一个这样的查询:

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

用方括号详尽地列出所有列名。

于 2018-01-11T19:57:20.900 回答
-1

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

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

正如 Gordon 所说,您可以使用 UI,或者按照我自己的喜好,智能感知列名。

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

于 2015-12-29T16:46:58.977 回答