所以我有一个包含许多列的表。假设每列包含相似的关键字,仅相差几个。我想根据相似的关键字选择这些列。
起初,这是我的尝试:
SELECT * REGEXP 'pages_title$' FROM 'pages';
即,应选择以pages_title
结尾的任何列。所以REGEXP应该适用于列的名称,而不是任何条目。这可能吗?我在网上找到的所有示例都与使用REGEXP隔离表中的某些值有关,这不是我想要的。
答案 0 :(得分:0)
REGEXP
适用于WHERE
部分查询 - 您无法使用它来选择要获取的列的列表...
为了您的原因,您需要以编程方式获取表格详细信息(例如DESC pages
),然后使用任何编程语言匹配并构建列表列表并在查询中使用它们...
答案 1 :(得分:0)
这不是一个完整的答案,但可能会有所不同。您可以动态构建查询:
declare @q varchar(1000)
set @q = 'select ' + @columnName + ' from table'
EXEC(@q)
否则,您可以从像这样的表中获取一组选定的列名称(MS T-SQL):
select name from DB.sys.syscolumns
where id=(
select id
from DB.sys.sysobjects
where xtype='U'
and name='pages'
)
where name LIKE '%pages_title'
不确定如何使用此集查询表中的特定列集。也许你可以以某种方式结合这两种方法?