MySQL - 如何根据列名称选择列

4

我想运行一个查询,如果列名包含特定字符串,则选择某些列。 例如我有列col_1、col_2、col_3、example_1和example_2,我想运行以下查询:

SELECT example_1, example_2 FROM `table`

但是通过模式匹配,所以:
SELECT LIKE %`example_`% FROM `table`

我似乎找不到任何关于如何做这件事的信息。

3个回答

3

我有点晚到,

确实可以使用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();

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%'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接