如何在 Sybase 中获取与给定字符串匹配的所有列名?
How can I get all column names matching a given string in Sybase?
我搜索了一下,但找不到关于此的具体问题。如何获取名称包含特定字符串的 table 中的所有列名称?具体来说,如果列名满足 like %bal%
那么我想编写一个查询,该查询将 return 该列名和其他在 Sybase 中满足该条件的查询。
编辑:Sybase RDBMS 是 Sybase IQ。
根据 OP 的附加评论更新:问题是针对 Sybase IQ 数据库的。
目前我面前没有 Sybase IQ 数据库,但我们应该能够根据 IQ 的系统拼凑出一个可行的查询 tables/views:
更简单的查询将使用系统视图SYSCOLUMNS
:
select cname
from SYS.SYSCOLUMNS
where tname = '<table_name>'
and cname like '%<pattern_to_match>%'
或者违背系统 tables SYSTABLE
and SYSCOLUMN
:
select c.column_name
from SYS.SYSTABLE t
join SYS.SYSCOLUMN c
on t.table_id = c.table_id
where t.table_name = '<table_name>'
and c.column_name like '%<pattern_to_match>%'
注意:由于引用的 (ASE) 系统 tables (sysobjects
, syscolumns
) 也存在于 SQL Anywhere/IQ 产品中作为(部分)尝试提供 (ASE) T-SQL 兼容性。
假设这是 Sybase ASE,那么 sysobjects
和 syscolumns
之间的快速连接就足够了:
select c.name
from dbo.sysobjects o
join dbo.syscolumns c
on o.id = c.id
and o.type in ('U','S') -- 'U'ser or 'S'ystem table
where o.name = '<table_name>'
and c.name like '%<portion_of_column_name>%'
例如,假设我们要查找 sysobjects
table 中列名包含字符串 'trig'
:
的所有列
select c.name
from dbo.sysobjects o
join dbo.syscolumns c
on o.id = c.id
and o.type in ('U','S')
where o.name = 'sysobjects'
and c.name like '%trig%'
order by 1
go
----------
deltrig
instrig
seltrig
updtrig
我搜索了一下,但找不到关于此的具体问题。如何获取名称包含特定字符串的 table 中的所有列名称?具体来说,如果列名满足 like %bal%
那么我想编写一个查询,该查询将 return 该列名和其他在 Sybase 中满足该条件的查询。
编辑:Sybase RDBMS 是 Sybase IQ。
根据 OP 的附加评论更新:问题是针对 Sybase IQ 数据库的。
目前我面前没有 Sybase IQ 数据库,但我们应该能够根据 IQ 的系统拼凑出一个可行的查询 tables/views:
更简单的查询将使用系统视图SYSCOLUMNS
:
select cname
from SYS.SYSCOLUMNS
where tname = '<table_name>'
and cname like '%<pattern_to_match>%'
或者违背系统 tables SYSTABLE
and SYSCOLUMN
:
select c.column_name
from SYS.SYSTABLE t
join SYS.SYSCOLUMN c
on t.table_id = c.table_id
where t.table_name = '<table_name>'
and c.column_name like '%<pattern_to_match>%'
注意:由于引用的 (ASE) 系统 tables (sysobjects
, syscolumns
) 也存在于 SQL Anywhere/IQ 产品中作为(部分)尝试提供 (ASE) T-SQL 兼容性。
假设这是 Sybase ASE,那么 sysobjects
和 syscolumns
之间的快速连接就足够了:
select c.name
from dbo.sysobjects o
join dbo.syscolumns c
on o.id = c.id
and o.type in ('U','S') -- 'U'ser or 'S'ystem table
where o.name = '<table_name>'
and c.name like '%<portion_of_column_name>%'
例如,假设我们要查找 sysobjects
table 中列名包含字符串 'trig'
:
select c.name
from dbo.sysobjects o
join dbo.syscolumns c
on o.id = c.id
and o.type in ('U','S')
where o.name = 'sysobjects'
and c.name like '%trig%'
order by 1
go
----------
deltrig
instrig
seltrig
updtrig