4

如果它们的名称包含字符串,我想运行一个查询来选择某些列。所以说我有列 col_1、col_2、col_3、example_1、example_2 我想运行:

SELECT example_1, example_2 FROM `table`

但是有模式匹配..所以:

SELECT LIKE %`example_`% FROM `table`

我似乎无法在任何地方找到如何做到这一点

4

3 回答 3

3

Im a bit late here,

Indeed its possible with MySQL Stored Procedures

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//

And Call them by

 delimiter ;
 call custom_select();
于 2013-10-25T05:53:05.297 回答
1

您不能像在列的值中那样使用通配符作为列的名称。您可以做的最好的事情是使用像 php 这样的服务器端语言来用变量作为列名来制定查询。例如..

$query = 'select ' . $columnName1 . ', ' . $columnName2 . ' from myTable;';
于 2013-10-25T04:48:14.757 回答
0

您不能使用标准 SQL。列名不被视为 SQL 中的数据。

如果您使用的 SQL 引擎具有存储列名、类型等的元数据表,则可以改为在该表上进行选择。

您可以使用以下查询获取类似的列名:

  select * from information_schema.columns where table_name='table1' and column_name like 'a%'
于 2013-10-25T05:02:01.510 回答