我正在编写一个简单的查询来显示表格中列的名称。
这是我使用的SQL:
select column_name from cols where table_name='StudentInfo';
由于某种原因,即使我的StudentInfo表确实有列,此查询也会产生一个空结果表。
答案 0 :(得分:2)
表名可能以大写字母存储,因此条件table_name='StudentInfo'
失败。请注意,Oracle(以及我所知道的大多数其他RDBMS)以区分大小写的方式比较字符串。对于不区分大小写的比较,请在两个参数上使用UPPER
(或LOWER
)。因此,以下查询应该可以安全地运行:
select column_name from cols where upper(table_name)=upper('StudentInfo')
还有其他方法可以将字符串比较转换为不区分大小写,例如更改会话参数NLS_COMP
和NLS_SORT
(例如,参见https://stackoverflow.com/a/5391234/2630032,并在适用的情况下提交此引用)。但是,通过使用UPPER
,您可以使查询独立于此类设置。
答案 1 :(得分:1)
你可以这样做:
select column_name from cols where lower(table_name) like '%studentinfo%'