通过通配符扩展将星号编辑到 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
如何将*
[星号]改为列名列表?将鼠标光标放在 *
上后,我可以查看列名列表。是否可以单击破解某些东西以将 *
更改为名称,而无需 运行 脚本并将结果插入某些 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 拖到您的查询中
- 或者如果您更喜欢带有 [] 的列名,则可以使用
delete MyTable
Script table as Select