我想运行一个查询,如果列名包含特定字符串,则选择某些列。 例如我有列col_1、col_2、col_3、example_1和example_2,我想运行以下查询:
SELECT example_1, example_2 FROM `table`
但是通过模式匹配,所以:
SELECT LIKE %`example_`% FROM `table`
我似乎找不到任何关于如何做这件事的信息。
我有点晚到,
确实可以使用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();
您不能像对列的值那样使用通配符来使用列名。最好的方法是使用服务器端语言,比如php,使用变量作为列名来构建您的查询。例如...
$query = 'select ' . $columnName1 . ', ' . $columnName2 . ' from myTable;';
使用标准SQL是无法实现的。在SQL中,列名不像数据一样被处理。
如果您使用的SQL引擎具有存储列名、类型等元数据表,则可以选择该表进行查询。
您可以使用以下查询获取类似的列名:
select * from information_schema.columns where table_name='table1' and column_name like 'a%'