SQL sintaxe

Há uns tempos, andava na internet a examinar como é que o parser do Oracle funciona e eis que descobri algumas brincadeiras interessantes para mostrarem aos vossos amigos:

 

SQL> select -1from from dual;


ROM
----------
-1.0E+000

 

Aparentemente parece uma sintaxe inválida, mas nao o é. Não é por dois motivos:

1 – O Oracle não necessita de espaço para o “tokenize”

2 – “-1from” significa um dígito (-1) e um “f” que representa um float. Como tal o exemplo seguinte também funciona em que o “d” representa naturalmente um double

 

SQL> select -2drom from dual;

ROM
----------
-2.0E+000

Curioso, é entender que o no primeiro ou no segundo exemplo, e reflectindo o facto do Oracle não necessitar de espaços para “tokenize”
que primeiro temos um dígito, a seguir o seu formato e tal e qual as regras de sintaxe do Oracle o resto representa um “alias” para a coluna.

 

Para finalizar e para reflectirem um pouco analisem o seguinte:

 

SQL> select*from dual where exists(select 1/0 from dual);

DUM
---
X
Advertisements

One thought on “SQL sintaxe

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s