如何将*
[星号] 更改为列名列表?将鼠标光标放在*
. *
是否可以在不运行脚本并将结果插入某个 dbo.temp 表的情况下单击某些内容以更改名称?
所以期望的结果是:
with A as (select
MyColumn1=1
,MyColumn2=2
,MyColumn3=3)
select
MyColumn1
,MyColumn2
,MyColumn3
from A
如何将*
[星号] 更改为列名列表?将鼠标光标放在*
. *
是否可以在不运行脚本并将结果插入某个 dbo.temp 表的情况下单击某些内容以更改名称?
所以期望的结果是:
with A as (select
MyColumn1=1
,MyColumn2=2
,MyColumn3=3)
select
MyColumn1
,MyColumn2
,MyColumn3
from A
在 SQL Server Management Studio 中,您可以做任何您想做的事情。
在屏幕左侧,展开数据库以获取表名。然后,将表名拖到查询窗格中,它将列出所有列。
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 时的结果:
可以看到程序有两个参数,第二个参数是发送一个别名,这是一个例子:
将 cte 中的 * 转换为 Management Studio 中的列名
... select * into MyTable from A
Script table as Select
如果您更喜欢带有 [] 的列名,则可以使用delete MyTable
如果您只是想获取table的完整列列表(不是 CTE),您可以这样做:
在 SSMS 中,打开对象资源管理器并找到表。右键单击它并选择“选择前 1000 行”。
它会给你一个这样的查询:
SELECT TOP (1000) [ColumnName1]
,[ColumnName2]
,[Column Name 3]
...
FROM [databaseName].[schemaName].[TableName]
用方括号详尽地列出所有列名。
它被称为通配符,在生产代码中使用它是不好的做法。对至少没有“TOP n”表达式的任何内容执行“SELECT *”也是不好的做法。
例如,如果您更改了它所引用的表的架构,则必须重建包含通配符的视图才能再次正常运行。
正如 Gordon 所说,您可以使用 UI,或者按照我自己的喜好,智能感知列名。
UI 将强制使用方括号,以增强兼容性,尤其是对于以保留关键字命名或以数字开头的对象。