我正在尝试从Oracle中的表中获取列名。但我没有得到专栏名称。 我使用了很多查询,而Find可能会在Stack溢出中查询但是我没有得到答案。
我使用下面的查询:
1. SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TABLE_NAME';
2. SELECT COLUMN_NAME from ALL_TAB_COLUMNS where TABLE_NAME='TABLE_NAME';
但是Out Put是
no row selected
这里有什么问题。非常感谢你
答案 0 :(得分:1)
这两个查询都是正确的,只是导致这个问题的是,也许你没有用capital letters
编写你的表名你必须做这样的事情:
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS
where TABLE_NAME = UPPER('TABLE_NAME');
OR
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS
where TABLE_NAME = UPPER('TABLE_NAME');
答案 1 :(得分:0)
试试这个:
SELECT column_name
FROM all_tab_cols
WHERE upper(table_name) = 'TABLE_NAME'
AND owner = ' || +_db+ || '
AND column_name NOT IN ( 'password', 'version', 'id' )
或
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS where TABLE_NAME = UPPER('TABLE_NAME');
答案 2 :(得分:0)
我希望此查询可以帮助您
SELECT SCHEMA_NAME (schema_id) + '.' + t.name AS 'Table Name'
FROM sys.tables t
INNER JOIN sys.columns c
ON c.object_id = t.object_id
WHERE c.name like '%hmy%
ORDER BY 'Table Name'