在MySQL中使用REGEXP选择列

时间:2011-09-16 21:51:06

标签: mysql regex expression

所以我有一个包含许多列的表。假设每列包含相似的关键字,仅相差几个。我想根据相似的关键字选择这些列。

起初,这是我的尝试:

SELECT * REGEXP 'pages_title$' FROM 'pages';

即,应选择以pages_title结尾的任何列。所以REGEXP应该适用于列的名称,而不是任何条目。这可能吗?我在网上找到的所有示例都与使用REGEXP隔离表中的某些值有关,这不是我想要的。

2 个答案:

答案 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'

不确定如何使用此集查询表中的特定列集。也许你可以以某种方式结合这两种方法?