2015-05-29 63 views
0

我正在做一個任務,並試圖弄清楚我的聲明給了我一個ORA-00904:「SUBLOC」:無效標識符錯誤。我可以不使用MOD運算符中的別名字段嗎?任何幫助將不勝感激。SUBSTR&MOD無效標識符

SELECT Course_no, Location, TO_NUMBER(SUBSTR(Location,2)) AS Subloc 
FROM Section 
WHERE Location LIKE '%M%' 
    AND MOD(SubLoc,2) = 1 
ORDER BY Course_no; 

回答

3

您不能在定義它的where子句中使用列別名。使用子查詢或CTE:

SELECT s.* 
FROM (SELECT Course_no, Location, TO_NUMBER(SUBSTR(Location,2)) AS Subloc 
     FROM Section 
     WHERE Location LIKE '%M%' 
    ) s 
WHERE MOD(SubLoc, 2) = 1 
ORDER BY Course_no; 
1

戈登·利諾夫是正確的, ,你可以在where子句中也可以使用: 其中mod(TO_NUMBER(SUBSTR(位置,2)))= 1