2017-03-01 156 views
0

我正在写一个简单的查询来显示我的表中列的名称。Oracle SQL查询显示空结果

这是我使用的SQL:

select column_name from cols where table_name='StudentInfo'; 

出于某种原因,这个查询结果中,即使我的StudentInfo表确实有列空的结果表。

+0

尝试'从cols'选择不同的表名,并检查是否'“StudentInfo”'洒了这种方式。表格名称可能以大写字母或其他稍微不同的方式存储。 –

+0

繁荣。你刚刚解决了我的问题。任何想法为什么甲骨文有这样敏锐的大小写? – Gary

+0

肯定会给出一个upvote和一个复选标记。谢谢!非常感谢 – Gary

回答

2

表名可能以大写字母存储,使得条件table_name='StudentInfo'失败。请注意,Oracle(以及我知道的大多数其他RDBMS)以区分大小写的方式比较字符串。对于不区分大小写的比较,请在两个参数上使用UPPER(或LOWER)。所以下面的查询应该安全地工作:

select column_name from cols where upper(table_name)=upper('StudentInfo') 

有转向字符串比较为不区分大小写,如改变会话参数NLS_COMPNLS_SORT的其他方式(参见,例如,https://stackoverflow.com/a/5391234/2630032如果适用此给予好评参考)。但是,通过使用UPPER,您可以独立于此类设置进行查询。

1

你可以去这样的:

select column_name from cols where lower(table_name) like '%studentinfo%' 
+0

请注意,这也会匹配一个名为“StudentInfo_Temp”的表格...... –

+0

@StephanLechner是的!它会显示包含字符串'studentinfo'的所有记录。但是,如果我们只想要具有所需符号的记录,则应从查询中删除%。 –

+1

请注意,'like'也是区分大小写的(取决于设置)。请参阅http://stackoverflow.com/a/5391234/2630032 –