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