Выбор столбца с помощью REGEXP в MySQL - PullRequest
6 голосов
/ 17 сентября 2011

Итак, у меня есть таблица со многими столбцами.Предположим, что каждый столбец содержит похожие ключевые слова, отличающиеся лишь несколькими.Я хочу выбрать эти столбцы на основе их похожих ключевых слов.

Сначала это была моя попытка:

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

То есть должен быть выбран любой столбец, заканчивающийся pages_title.Таким образом, REGEXP должен применяться к имени столбца, а не к любым записям.Это возможно?Все примеры, которые я нашел в Интернете, касаются использования REGEXP для выделения определенных значений в таблице, а это не то, что мне нужно.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

Это не полный ответ, но он может что-то сделать.Вы можете построить свой запрос динамически:

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'

Не уверенкак использовать этот набор для запроса вашей таблицы для определенного набора столбцов.Возможно, вы могли бы как-то совместить эти два подхода?

0 голосов
/ 17 сентября 2011

REGEXP предназначено для WHERE части запроса - вы не можете использовать ее для выбора списка столбцов, которые хотите получить ...

По вашей причине вам потребуется программно получить данные таблицы(например, DESC pages), а затем с помощью любого языка программирования сопоставьте и создайте список столбцов и используйте их в своем запросе ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...