【发布时间】:2015-04-25 17:04:08
【问题描述】:
我正在使用 oracle 数据库,我想知道是否有一种方法可以找到在任何列中包含值的所有行。例如让我们考虑这个表:
Weather
city state high low
Phoenix Arizona 105 90
Tucson Arizona 101 92
Flagstaff Arizona 88 69
San Diego California 77 60
Albuquerque New Mexico 80 72
基本上(我知道这是不可能的),但我想做这样的事情:
Select * From Weather Where * LIKE '%f%'
它会给我行
Flagstaff Arizona 88 69
San Diego California 77 60
我可以在 Java 端执行此操作,方法是查询所有行,然后使用 ResultSet 动态搜索列中的给定值并添加该行。问题是某些表包含数百万行,我想在数据库端这样做会更有效,所以我只从网络中获取想要的行。
是否可以直接在 SQL 端进行?
【问题讨论】:
-
所以列和值都是用户输入?
-
@AniketThakur 不只是值,否则它只是一个带有 where 子句的简单 sql 查询
-
您需要知道哪个表用户正在尝试查询。这样你就可以在一个函数中获取它的所有列,然后在每一列上使用
where条件构建一个查询。 -
如果您事先不确定列名,那么显然您无法进行静态查询。因此,唯一可能的方法是(ab)在 PL/SQL 中使用动态 SQL。
-
你可以参考这个:[MS-SQL][1][1]:stackoverflow.com/questions/709120/…