Sql 在执行Oracle之前检查列是否存在
我有疑问:Sql 在执行Oracle之前检查列是否存在,sql,oracle,Sql,Oracle,我有疑问: SELECT Table_Name AS Table_Name, 'select count(*) from ' || Table_Name || 'where language!=0' AS Query FROM All_Tables WHERE Owner = 'databaseName' AND ( Table_Name LIKE 'HH%' OR Table_Name LIKE 'TT%' )
SELECT Table_Name AS Table_Name,
'select count(*) from '
|| Table_Name
|| 'where language!=0' AS Query
FROM All_Tables
WHERE Owner = 'databaseName'
AND ( Table_Name LIKE 'HH%'
OR Table_Name LIKE 'TT%' )
但是,并非所有表都有列
语言
。如何检查该列是否存在,如果存在,则检查语言
值 列名存储在USER_TAB_列中
;通过TABLE\u NAME
列将其与USER\u TABLES
连接,例如
select *
from user_tables t join user_tab_columns c on t.table_name = c.table_name
正如您知道的表名一样,您应该能够检查某些列是否存在
如果使用
所有表
/所有选项卡列
,则还包括所有者
值。列名存储在用户选项卡列
;通过TABLE\u NAME
列将其与USER\u TABLES
连接,例如
select *
from user_tables t join user_tab_columns c on t.table_name = c.table_name
正如您知道的表名一样,您应该能够检查某些列是否存在
如果使用
所有表
/所有选项卡列
,请同时包括所有者
值。要检查特定表中是否存在列,请使用:
SELECT owner, table_name
FROM all_tab_columns
WHERE UPPER(column_name) = UPPER(<your column _name>) and
TABLE_NAME=upper(<your table_name>);
选择所有者、表名称
从所有_选项卡_列
其中UPPER(列名称)=UPPER()和
表_NAME=upper();
要检查特定表中是否存在列,请使用:
SELECT owner, table_name
FROM all_tab_columns
WHERE UPPER(column_name) = UPPER(<your column _name>) and
TABLE_NAME=upper(<your table_name>);
选择所有者、表名称
从所有_选项卡_列
其中UPPER(列名称)=UPPER()和
表_NAME=upper();
您可以如下方式修改现有查询:
SELECT table_name AS Table_name,
'select count(*) from ' || table_name || ' where language!=0' as query
FROM all_tables t
WHERE t.owner = 'databaseName'
AND (t.table_name LIKE 'HH%'
OR t.table_name LIKE 'TT%')
AND EXISTS (SELECT 1
FROM all_tab_columns c
WHERE c.table_name = t.table_name
AND c.owner = t.owner
AND UPPER(c.column_name) = 'LANGUAGE')
如果有帮助,请告诉我
谢谢
Idrees您可以如下方式修改现有查询:
SELECT table_name AS Table_name,
'select count(*) from ' || table_name || ' where language!=0' as query
FROM all_tables t
WHERE t.owner = 'databaseName'
AND (t.table_name LIKE 'HH%'
OR t.table_name LIKE 'TT%')
AND EXISTS (SELECT 1
FROM all_tab_columns c
WHERE c.table_name = t.table_name
AND c.owner = t.owner
AND UPPER(c.column_name) = 'LANGUAGE')
如果有帮助,请告诉我
谢谢
Idrees您可以使用EXISTS子句修改现有查询。。查看下面我的答案。您可以使用EXISTS子句修改现有查询。。看看下面我的答案,谢谢!它只用于获取这些具有语言的表。是否可以用不同的查询将没有该列的数据连接起来?是的。。您可以在UNION子句中添加类似的查询,并使用其他条件LIKE<代码>选择条件1联合选择条件2谢谢!它只用于获取这些具有语言的表。是否可以用不同的查询将没有该列的数据连接起来?是的。。您可以在UNION子句中添加类似的查询,并使用其他条件LIKE<代码>选择条件\u 1联合选择条件\u 2