想根據一定的條件顯示欄,是否有可能因爲我這樣做得到錯誤。根據一定的條件顯示欄
select (
select column_name
from all_tab_cols
where table_name='BED_2016_MAR_CIT4114A_FYP1_G_'
and column_name like '%na%'
)
from BED_2016_MAR_CIT4114A_FYP1_G_;
想根據一定的條件顯示欄,是否有可能因爲我這樣做得到錯誤。根據一定的條件顯示欄
select (
select column_name
from all_tab_cols
where table_name='BED_2016_MAR_CIT4114A_FYP1_G_'
and column_name like '%na%'
)
from BED_2016_MAR_CIT4114A_FYP1_G_;
SQL查詢必須列出顯式使用的列。你可以使用動態SQL做你想做的事(execute immediate
)。例如:
declare
sql varchar2(4000);
cols varchar2(4000);
begin
select listagg(column_name, ',') within group (order by column_name)
into cols
from all_tab_cols
where table_name = 'BED_2016_MAR_CIT4114A_FYP1_G_' and column_name like '%na%' ;
sql := '
create table newtab as
select @cols
from BED_2016_MAR_CIT4114A_FYP1_G_';
sql := replace(sql, '@cols', cols);
execute immediate sql;
end;
select *
from newtab;
貌似問題是在where
條件:
where table_name='BED_2016_MAR_CIT4114A_FYP1_G_'
and column_name like '%na%'
爲TABLE_NAME卸下狀態。您已經從BED_2016_MAR_CIT4114A_FYP1_G_中選擇,因此只會顯示該表中的列。
下面是該查詢的更簡化的版本:
select column_name
from BED_2016_MAR_CIT4114A_FYP1_G_
where column_name like '%na%'
希望這有助於
這不起作用。 –
什麼錯誤?大概不是「ORA-00942:表或視圖不存在」,這是我得到的...但是,如果我使用一個表,而不是存在於我的模式,而不是BED_2016_MAR_CIT4114A_FYP1_G_,那麼我根本沒有錯誤。 –
錯誤是邏輯錯誤沒有顯示。我基本上想要像基於條件選擇列一樣,通常我們把選擇*或選擇ID,名稱,所以我想要選擇基於有像%na%列% –
列* name *就像'na'(in小寫,暗示引用的標識符);或列值是否像'na'?他們是非常不同的東西。你是否試圖確定哪些列包含匹配該模式的數據? –