如何选择具有相似名称的多个列

时间:2014-08-07 10:48:15

标签: sql oracle

我有一个表STMT_TABLE,它有列ID,NAME,COL1,COL2 ...... COL99。 现在,我希望选择列COL1到COL99中的所有数据。 是否有替换(SELECT COL1,COL2 ... COL99 FROM tablename)?

2 个答案:

答案 0 :(得分:2)

您可以使用某种shell脚本来解决此问题。

以下是powershell:

write-host -nonewline "select "
for ($i = 1; $i -le 98; $i++) {
    write-host -nonewline "COL$i, ";
}
write-host -nonewline "COL99";
write-host " from stmt_table where [...]"

我也使用excel这些东西,只需创建一个内容为“COL”的列,并使用小方块将其向下复制。然后在下一列中将第1行中的1,第二行中的2,然后是3,并使用小的squarety来计算。在此之后你放一个逗号并使用square-thingy。然后将整个内容复制到文本编辑器,并使用search-replace删除不需要的空格。

答案 1 :(得分:1)

如果您不想指定所有100列,您可以:

select column_name || ',' 
  from user_tab_columns 
 where table_name = 'TABLE_NAME_IN_UPPER_CASE'
 order by column_id

然后复制输出并将其传递到您的查询中(不要忘记删除最后一个逗号):

select <PASTE_HERE_PREVIOUS_OUTPUT> 
  from <YOUR_TABLE_NAME>

但是你无法在自动模式下使用它,大多数工作都是你自己动手做的。