2017-05-31 28 views
0

是否可以使用别名作为REGEXP_COUNT函数中的第一个参数,而不是实际的字段名称。比如我用下面的:Oracle - 在REGEX_COUNT函数的第一个参数中使用别名

SELECT first_name ||' '|| last_name as fullname, 
     REGEXP_COUNT(fullname, 'o', 1, 'i') AS total 
FROM BROKERS 

我不断收到一个错误,让我觉得我会称呼其为一个场,而不是调用连锁的“全名”

+2

号在Oracle中这是不可能的'select'重新使用列别名的“全名”和它的数它在哪里定义。几乎所有数据库都是如此。改为使用子查询或CTE。 –

+0

戈登,如果你能告诉我请用一个子查询怎么看。赞赏 – Simulator23

回答

1

为“无效的标识符”在评论中提到,你需要使用子查询:

SELECT REGEXP_COUNT(b.fullname, 'o', 1, 'i') AS total 
    FROM (SELECT first_name ||' '|| last_name as fullname 
      FROM BROKERS) b; 

或者你可以做串联的功能:

SELECT first_name ||' '|| last_name as fullname, 
     REGEXP_COUNT(first_name ||' '|| last_name, 'o', 1, 'i') AS total 
    FROM BROKERS 
GROUP BY first_name ||' '|| last_name; 

如果你要选择你还需要一个group by

SELECT b.fullname, 
     REGEXP_COUNT(b.fullname, 'o', 1, 'i') AS total 
    FROM (SELECT first_name ||' '|| last_name as fullname 
      FROM BROKERS) b 
    GROUP BY b.fullname; 
相关问题