programing

Oracle에서 에일리어스를 정의하려면 'as' 키워드가 필요합니까?

lovecodes 2023. 3. 6. 22:41
반응형

Oracle에서 에일리어스를 정의하려면 'as' 키워드가 필요합니까?

SELECT 문에서 열의 별칭 이름을 정의하려면 Oracle에서 'AS' 키워드가 필요합니까?

나는 그것을 알아챘다.

SELECT column_name AS "alias"

와 같다

SELECT column_name "alias"

컬럼 에일리어스를 후자의 방법으로 정의하면 어떤 결과가 나올지 궁금합니다.

select_list Oracle select 매뉴얼에 따르면 AS는 옵션입니다.

개인적인 메모로는 AS가 더 읽기 쉽다고 생각합니다.

(테스트 대상)Oracle 11g)

대해서AS:

  • 결과 열에 사용할 경우,AS는 옵션입니다.
  • 테이블 이름에 사용할 경우,AS추가되지 않아야 합니다.그렇지 않으면 에러입니다.

대해서double quote:

  • 결과 열과 테이블 이름 모두 옵션이며 유효합니다.

-- 'AS' is optional for result column
select (1+1) as result from dual;
select (1+1) result from dual;


-- 'AS' shouldn't be used for table name
select 'hi' from dual d;


-- Adding double quotes for alias name is optional, but valid for both result column & table name,
select (1+1) as "result" from dual;
select (1+1) "result" from dual;

select 'hi' from dual "d";

큰따옴표를 붙이지 않는 것이 좋습니다.

SELECT employee_id,department_id AS department
FROM employees
order by department

--OK--

SELECT employee_id,department_id AS "department"
FROM employees
order by department

--Oracle 오류--

ORDER BY 절을 사용한다면 큰따옴표 없이 AS를 사용하는 것이 좋습니다.

둘 다 맞습니다.Oracle에서는 둘 다 사용할 수 있습니다.

결론은 (12c에서 테스트 완료)입니다.

  • AS는 항상 옵션이며, "의 유무에 관계없이 AS에는 차이가 없습니다(컬럼 에일리어스만, AS 앞의 테이블 에일리어스는 사용할 수 없습니다).
  • 단, ""의 유무에 관계없이 차이가 있습니다.이는 ""가 에일리어스에 대해 소문자를 사용할 수 있기 때문입니다.

다음과 같이 됩니다.

SELECT {T / t} FROM (SELECT 1 AS T FROM DUAL); -- Correct
SELECT "tEST" FROM (SELECT 1 AS "tEST" FROM DUAL); -- Correct
SELECT {"TEST" / tEST} FROM (SELECT 1 AS "tEST" FROM DUAL ); -- Incorrect

SELECT test_value AS "doggy" FROM test ORDER BY "doggy"; --Correct
SELECT test_value AS "doggy" FROM test WHERE "doggy" IS NOT NULL; --You can not do this, column alias not supported in WHERE & HAVING
SELECT * FROM test "doggy" WHERE "doggy".test_value IS NOT NULL; -- Do not use AS preceding table alias

따라서 AS와 "를 사용하여 문제가 발생하는 이유는 AS가 아닙니다.

주의: " 에일리어스에 공백이 포함되어 있거나 에일리어스에 소문자가 포함되어 있는 경우 큰따옴표가 필요합니다.또한 결과에는 소문자로 설정된 MUST가 표시됩니다.다른 모든 시나리오에서는 옵션이며 무시할 수 있습니다.

따옴표는 에일리어스 이름에 다음과 같은 공백이 있을 때 필요합니다.

SELECT employee_id,department_id AS "Department ID"
FROM employees
order by department

둘 다 다를 게 없어요.AS는 에일리어스를 언급하는 보다 명확한 방법일 뿐입니다.이는 일부 종속 라이브러리가 이 작은 키워드에 의존하기 때문입니다(예: JDBC 4.0). 사용 방법에 따라 다른 동작을 관찰할 수 있습니다.

이것 좀 봐.나는 항상 그러한 문제를 피하기 위해 완전한 형태의 의미론을 사용할 것을 제안한다.

언급URL : https://stackoverflow.com/questions/8451195/is-the-as-keyword-required-in-oracle-to-define-an-alias

반응형