显示空结果的Oracle SQL查询
我正在编写一个简单的查询来显示表中列的名称 这是我使用的SQL:显示空结果的Oracle SQL查询,sql,oracle,Sql,Oracle,我正在编写一个简单的查询来显示表中列的名称 这是我使用的SQL: select column_name from cols where table_name='StudentInfo'; 出于某种原因,即使我的StudentInfo表确实有列,此查询仍会导致空结果表。表名可能以大写字母存储,从而导致条件表\u name='StudentInfo'失败。请注意,Oracle(以及我所知道的大多数其他RDBMS)以区分大小写的方式比较字符串。对于不区分大小写的比较,请在两个参数上使用UPPER(或
select column_name from cols where table_name='StudentInfo';
出于某种原因,即使我的StudentInfo表确实有列,此查询仍会导致空结果表。表名可能以大写字母存储,从而导致条件
表\u name='StudentInfo'
失败。请注意,Oracle(以及我所知道的大多数其他RDBMS)以区分大小写的方式比较字符串。对于不区分大小写的比较,请在两个参数上使用UPPER
(或LOWER
)。因此,以下查询应该可以安全地工作:
select column_name from cols where upper(table_name)=upper('StudentInfo')
还有其他将字符串比较转换为不区分大小写的方法,如更改会话参数
NLS\u COMP
和NLS\u SORT
(例如,请参阅,如果适用,请向上投票此引用)。但是,通过使用UPPER
,您可以使查询独立于这些设置。表名可能以大写字母存储,从而导致条件表\u name='StudentInfo'
失败。请注意,Oracle(以及我所知道的大多数其他RDBMS)以区分大小写的方式比较字符串。对于不区分大小写的比较,请在两个参数上使用UPPER
(或LOWER
)。因此,以下查询应该可以安全地工作:
select column_name from cols where upper(table_name)=upper('StudentInfo')
还有其他将字符串比较转换为不区分大小写的方法,如更改会话参数NLS\u COMP
和NLS\u SORT
(例如,请参阅,如果适用,请向上投票此引用)。但是,通过使用UPPER
,您可以使查询独立于这些设置。您可以这样做:
select column_name from cols where lower(table_name) like '%studentinfo%'
你可以这样做:
select column_name from cols where lower(table_name) like '%studentinfo%'
尝试从cols中选择不同的表名,并检查“StudentInfo”是否以这种方式亮起。表名可能以大写字母或任何其他稍有不同的方式存储。你刚刚解决了我的问题。你知道为什么甲骨文有如此敏锐的区分大小写能力吗?我肯定会投赞成票并打勾。非常感谢。非常感谢您编辑的关于区分大小写的答案。请尝试从cols中选择不同的表名,并检查
“StudentInfo”
是否以这种方式显示。表名可能以大写字母或任何其他稍有不同的方式存储。你刚刚解决了我的问题。你知道为什么甲骨文有如此敏锐的区分大小写能力吗?我肯定会投赞成票并打勾。非常感谢。非常感谢您编辑的关于区分大小写的答案。@Stephancher是的!它将显示包含字符串“studentinfo”的所有记录。但是,如果我们只需要具有所需符号的记录,则应从查询中删除%。请注意,like
也区分大小写(取决于设置)。见@StephanLechner是的!它将显示包含字符串“studentinfo”的所有记录。但是,如果我们只需要具有所需符号的记录,则应从查询中删除%。请注意,like
也区分大小写(取决于设置)。看见