此问题在此处已有答案:
Can you SELECT everything, but 1 or 2 fields, without writer's cramp?(12个答案)
22天前关闭。
我有一个表,有很多列(大约50个)。我还有5个列,名字以expr_...
开头。我想抓取除了expr_...
列之外的所有列。我可以快速完成而不定义所有需要的列吗?
比如:
SELECT
* FROM TABLE WHERE column_name NOT LIKE '%EXPR%'
字符串
而不是:
SELECT
a, b, c, d, e, f, g, h, .... FROM table```
型
2条答案
按热度按时间gopyfrb31#
PL/SQL提供了各种选项,最明显的是返回ref游标或自定义类型的函数。
然而,如果你想留在纯SQL中,你可以写一些代码来为你写代码。
包含多个
expr_
列的示例表:字符串
如果您查询
user_tab_columns
,将关键字与 desired 列的聚合列表连接起来(因为where
子句消除了expr
),结果就是您需要的:型
最后,复制/粘贴上面的语句并执行它:
型
create view
,以便将其存储在数据库中,并从现在开始查询它(视图):型
下面是返回ref cursor* 选项的 * 函数(如果你认为你想要这样做;我不会,因为它不像以前发布的视图选项那样灵活):
型
测试:
型
vu8f3i0k2#
您可以为此创建一个过程,并立即执行或输出到控制台进行编辑,然后像这样执行,并将
EXAMPLE
替换为您的表名:字符串
在执行任何动态创建的查询之前进行彻底的测试是非常重要的。
或者,只需这样做即可在键入时保存所有列名:
型