我正在使用Oracle DB,我想编写一个SQL查询,然后我可以用JDBC调用它。我对SQL不是很熟悉,所以如果有人可以帮助我,那可能会很棒!这是问题所在。我有一个表MY_TABLE,它包含另一个表的列表,我想只保留非空表和那些名称以特定字符串开头的表。 我写的查询如下:
select TABLE_NAME
from MY_TABLE
where TABLE_NAME like '%myString%'
and (select count(*) from TABLE_NAME where rownum=1)<>0
order by TABLE_NAME;`
问题来自第二个SELECT,但我不知道如何使用TABLE_NAME值。
有人有想法吗?
感谢。
[从评论中添加]
实际上,我需要测试ALL_CATALOG表中包含的V $视图。但是,如果我能找到另一个包含所有这些视图的表,并且也包含NUM_ROWS列,那么它将是完美的!
答案 0 :(得分:2)
标准版本的SQL不允许您将查询的“结构元素”(例如表名或列名)替换为变量值或占位符。
有几种方法可以解决这个问题。
答案 1 :(得分:1)
你能使用oracle视图USER_TABLES吗?然后查询将更容易
select TABLE_NAME
from USER_TABLES
where TABLE_NAME like '%myString%'
and Num_ROWS > 0
order by TABLE_NAME;`