2017-05-31 29 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; 
相關問題