CASE SQL Oracle 查询 - 出了啥问题?
Posted
技术标签:
【中文标题】CASE SQL Oracle 查询 - 出了啥问题?【英文标题】:CASE SQL Oracle Query - What is wrong?CASE SQL Oracle 查询 - 出了什么问题? 【发布时间】:2014-07-16 16:30:50 【问题描述】:我有以下查询来选择要在查询中使用的视图,但是我收到错误:
在预期的地方找不到 FROM 关键字
select *, (CASE WHEN 'employee' = 'employee' THEN employee ELSE vw END) FROM type1
【问题讨论】:
虽然没有看到任何问题。您在哪个 RDBMS 中? 它对我有用。 sqlfiddle.com/#!4/d41d8/32697CASE WHEN 'employee' = 'employee'
似乎没什么用。
这是一个测试它的示例查询。
假设你不能有一个使用变量的动态表名,这只是为了Oracle吗?
【参考方案1】:
select type1.*,
(CASE WHEN 'employee' = 'employee'
THEN employee
ELSE vw
END)
FROM type1
我总是用*
的表名/表别名前缀,它可以工作!!
当我们指定通配符和其他选择表达式的组合时,我们只需要指定,从this
表中获取all
列!
【讨论】:
您是否意识到'employee' = 'employee'
总是评估为真?
是的,但我想这只是描述这个问题的一个示例查询!!
@MaheswaranRavisankar +加一。【参考方案2】:
您不能在 select 语句中同时使用 *
和各个列。
SELECT (CASE WHEN 'employee' = 'employee' THEN 'employee' ELSE 'vw' END)
FROM dual
【讨论】:
您是否意识到'employee' = 'employee'
总是评估为真?
@Krumia 它是作为演示添加的。【参考方案3】:
如果前面没有别名/TableName(.),您将无法在 Oracle 中执行 *,
。列出您希望在结果集中看到的列或添加表别名/表名。
【讨论】:
我说的是“*”。我从来没有说过你不能使用 * 是的,我在发表评论后就注意到了逗号;) 嗯...是的,你可以。试试SELECT t.*, t.column_name FROM table_name t;
【参考方案4】:
您不能设置 select 语句应从语句的列列表部分中检索数据的视图的名称。
【讨论】:
以上是关于CASE SQL Oracle 查询 - 出了啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
带有 CASE 和 JOIN SUBQUERY 的 Oracle SQL 查询
Oracle SQL - 使用 Case 语句缺少关键字错误的更新查询
Oracle SQL 查询使用 case when,压缩空字段