Ana*_*hav 6 sql sql-server vbscript
我试图显示表中除 IDENTITY COLUMN 之外的所有可用列。是否可以?
伪代码会是这样的。
SELECT * FROM Tab1 WHERE IDENTIY = NULL
Run Code Online (Sandbox Code Playgroud)
或者
SELECT * FROM Tab1 WHERE IDENTIY <> 'YES'
Run Code Online (Sandbox Code Playgroud)
这显然是无效的。但我想实现这样的目标。是否可以??
附言。我通过 VBScript 的 SQL 服务器连接来执行此操作,并且我不想对列名称进行硬编码(显然是为了灵活性)。
这是 VbScript 片段。
SQL_Cols = "select Column_name from Information_schema.columns where Table_name = 'Tab1'"
Recordset.open SQL_Cols,ConnString
p = recordset.getrows()
STR_Cols = ""
for i=1 to Ubound(p,2) ' from 1 to UBound since in p(0,0) name of identity column is stored
if i = Ubound(p,2) Then
STR_Cols = STR_Cols &"["&p(0,i)&"]"
else
STR_Cols = STR_Cols &"["&p(0,i)&"],"
end if
NEXT
Recordset.close
Run Code Online (Sandbox Code Playgroud)
STR_Cols存储所有列名(第一个列名除外(这是一个标识列))
我稍后用它来执行下行流任务。只有一件事这工作绝对正常。仅当第一列是 IDENTIY 列时,这才有效,如果表发生更改,则必须更改代码。我希望代码尽可能灵活和健壮。
尝试这样:
sys.columns=包含与特定数据库有关的所有列
sys.tables=包含与特定数据库有关的所有表
sys.identity_columns=包含与特定数据库有关的所有标识列
因此,可以通过以下方式生成结果joins并is_identity=1排除标识列,并将Not IN所有列添加到特定表
select c.name from sys.columns c
join sys.tables AS t
on t.object_id=c.object_id
where c.name not in (select name from sys.identity_columns where is_identity=1)
and t.name='MyTableName'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11581 次 |
| 最近记录: |