우연히 알게 되어 올립니다.
C 나 C++ 등에서
숫자 상수 뒤에 f , d,l 등을 붙여서 숫자의 단정도 또는 배정도를 표기합니다.
그런데 f,d,l 같은 것 중에서 오라클 SQL에서는 f,d는 사용할 수 있더군요
즉
select 1.2f from dual;
select 1.2d from dual;
이렇게 쓸 수 있다는 것입니다.
그런데 l은 사용할 수 없더군요...
select 12l from dual;
하면 에러가 안나지만
select 12l as a from dual;
하면 에러가 납니다.
그런데 이상하지 않나요?
왜
select 12l from dual;
은 에러가 안날까요?
심지어
select 12갑 from dual ;
도 에러가 안납니다.
설마 오라클이 '갑' 이 담배를 세는 단위임을 인식해서? ㅋㅋ
알고 보니
select 12갑 from dual;
에서 '갑' 을 오라클은 alias로 파싱합니다.
그런데 이상한 것은 일반적인 파서들은 토큰을 인식할 때 분리문자(공백,탭,엔터값)으로 분리되지 않거나 특수문자(연산자를 이루는)를 만나기 전에는 해당 토큰이 끝나지 않은것으로 보아
에러를 리턴해야 정상입니다.
그런데 오라클은 숫자상수 뒤에 바로 alias를 써도 인정이 되네요...
물론
select '12'갑 from dual;
도 에러가 안납니다.
좀 재미있는 현상이네요 |