2013-10-25 4 views
2

Я хочу запустить запрос, который выбирает определенные столбцы, если их имя содержит строку. Так что у меня есть столбцы col_1, col_2, col_3, example_1, example_2 я хочу запустить:mysql - Как выбрать столбцы на основе их имени

SELECT example_1, example_2 FROM `table` 

но с матча рисунком .. Итак:

SELECT LIKE %`example_`% FROM `table` 

я не могу показаться, чтобы найти как это сделать в любом месте

ответ

1

Вы не можете использовать подстановочные знаки, как вы можете, для значений столбца для имени столбца. Лучшее, что вы можете сделать, это использовать язык на стороне сервера, например php, для формулировки запроса с переменными в качестве имен столбцов. Например ..

$query = 'select ' . $columnName1 . ', ' . $columnName2 . ' from myTable;'; 
0

Вы не можете со стандартным SQL. Имена столбцов не обрабатываются как данные в SQL.

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

Вы можете получить подобное имя столбца, используя следующий запрос:

select * from information_schema.columns where table_name='table1' and column_name like 'a%' 
1

Im немного поздно здесь,

Действительно его можно с MySQL хранимые процедуры

DELIMITER // 
create procedure custom_select() 
    begin 
    declare str_var TEXT; 
    select GROUP_CONCAT(column_name) into str_var from information_schema.columns where table_name ="YOUR_TABLE_NAME" and column_name like "example_%" and table_schema="YOUR_DATABASE"; 
    set @q = CONCAT('select ', str_var, ' from table_name '); 
    prepare stm from @q; 
    execute stm; 
    end// 

и называть их по

delimiter ; 
call custom_select(); 
Смежные вопросы