2013-09-29 67 views
0

我有以下声明。当我不使用子字符串函数时,我得到了超过20行选择。当我使用这个陈述时,我得到零。我只是想知道为了达到相同的结果,我需要在本声明中修正哪些内容。SQL子字符串函数

SQL> select * from 
    2 (select 
    3 sql_fulltext, executions 
    4 from v$sql 
    5 order by elapsed_time desc) 
    6 where substr(sql_fulltext,1,30) like '%table_name%'; 
+1

'table_name'是否出现在前30个字符中? –

+0

可能是愚蠢的评论,但是sql_fulltext的前30个字符中的字符串“table_name”? – asantaballa

+0

不,它不。这里是我正在尝试解决的问题“2. \t显示SQL语句(仅前30个字符)以及为包含单词table_name的SQL语句执行的所有SQL命令的执行次数(提示 - Escape子句)“ – PrgmRNoob

回答

1
select * from 
(select 
    sql_fulltext 
, substr(sql_fulltext,1,30) ShortText 
, executions 
from v$sql 
order by elapsed_time desc) 
where sql_fulltext like '%table_name%' 

的全名,让选择,并使用短名称的结果。

+2

不需要派生表,where条件可以直接应用。 –

+0

同意@a_horse_with_no_name,但不想混淆问题。不知道golf_pro90是否有其他原因。 – asantaballa