QUOTATION MARKS e QUOTE OPERATOR
Le virgolette alte doppie o doppi apici (QUOTATION MARKS) vengono usate per rinominare una colonna di una tabella.
E s e m p i o
SELECT 12 +10 "TOT" from dual;
TOT
----
22
Il singolo apice (SINGLE QUOTATION MARKS) al contrario serve nella definizione dei Character Literal, che non è altro che una sequenza di caratteri racchiusi da apici singoli.
E s e m p i o
SELECT 'Matt Murdock' "NOME" from dual;
NOME
------------
Matt Murdock
Se la stringa Character Literal contiene un singolo apice compare il messaggio di errore seguente:
SELECT 'Matt Murdock's power' FROM dual;
ORA-00923: parola chiave FROM non trovata dove prevista
00923. 00000 - "FROM keyword not found where expected"
Questo perché Oracle interpreta il carattere s come il nome della colonna "s" e si aspetta dopo il carattere s la clausola FROM.
Per risolvere il problema basta aggiungere un singolo apice prima del carattere s ma l'utilizzo di molti apici singoli potrebbero creare confusione
SELECT 'Matt Murdock''s power' FROM dual;
Oracle permette di utilizzare il QUOTE OPERATOR (q) come il simbolo che chiude la coppia di apici. Questo operatore permette di scegliere una coppia di simboli ( q'delimiter') come alternativa all'apice singolo:
( ), [ ], < > oppure { } oppure un qualsiasi carattere.
E s e m p i
SELECT q'< Matt Murdock's power >' "q<>"
FROM dual;
q<>
----------------------
Matt Murdock's power
SELECT q'[ Matt Murdock's power ]' "q[]"
FROM dual;
Risultato:
q[]
----------------------
Matt Murdock's power
SELECT q'X Matt Murdock's power X' "qXX"
FROM dual;
Risultato:
qXX
----------------------
Matt Murdock's power
E s e m p i o
SELECT 12 +10 "TOT" from dual;
TOT
----
22
Il singolo apice (SINGLE QUOTATION MARKS) al contrario serve nella definizione dei Character Literal, che non è altro che una sequenza di caratteri racchiusi da apici singoli.
E s e m p i o
SELECT 'Matt Murdock' "NOME" from dual;
NOME
------------
Matt Murdock
Se la stringa Character Literal contiene un singolo apice compare il messaggio di errore seguente:
SELECT 'Matt Murdock's power' FROM dual;
ORA-00923: parola chiave FROM non trovata dove prevista
00923. 00000 - "FROM keyword not found where expected"
Questo perché Oracle interpreta il carattere s come il nome della colonna "s" e si aspetta dopo il carattere s la clausola FROM.
Per risolvere il problema basta aggiungere un singolo apice prima del carattere s ma l'utilizzo di molti apici singoli potrebbero creare confusione
SELECT 'Matt Murdock''s power' FROM dual;
Oracle permette di utilizzare il QUOTE OPERATOR (q) come il simbolo che chiude la coppia di apici. Questo operatore permette di scegliere una coppia di simboli ( q'delimiter') come alternativa all'apice singolo:
( ), [ ], < > oppure { } oppure un qualsiasi carattere.
E s e m p i
SELECT q'< Matt Murdock's power >' "q<>"
FROM dual;
q<>
----------------------
Matt Murdock's power
SELECT q'[ Matt Murdock's power ]' "q[]"
FROM dual;
Risultato:
q[]
----------------------
Matt Murdock's power
SELECT q'X Matt Murdock's power X' "qXX"
FROM dual;
Risultato:
qXX
----------------------
Matt Murdock's power