Utilizzo delle virgolette nello script
Le virgolette possono essere utilizzate nelle istruzioni di script in diversi modi.
All'interno delle istruzioni LOAD
In un'istruzione LOAD i seguenti simboli dovrebbero essere utilizzati come virgolette per i nomi di campo e i nomi di tabella:
Descrizione simbolo | Simbolo | Punto del codice | Esempio |
---|---|---|---|
virgolette doppie |
" " | 34 | "stringa" |
parentesi quadre | [ ] | 91, 93 | [stringa] |
accenti gravi | ` ` | 96 | `stringa` |
E i seguenti simboli devono essere utilizzati come virgolette per i valori letterali delle stringhe:
Descrizione simbolo | Simbolo | Punto del codice | Esempio |
---|---|---|---|
virgolette singole |
' ' |
39 | 'stringa' |
Nelle istruzioni SELECT
Per un'istruzione SELECT interpretata dal driver ODBC possono esistere lievi differenze. In generale, si consiglia di utilizzare le virgolette doppie diritte (Alt + 0034) per i nomi di campi e tabelle e di utilizzare le virgolette singole diritte (Alt + 0039) per i valori letterali evitando di utilizzare gli accenti gravi. Tuttavia, alcuni driver ODBC non solo accettano gli accenti gravi bensì li preferiscono. In questo caso, le istruzioni SELECT generate contengono virgolette con accenti gravi.
Esempio di virgolette in Microsoft Access
Microsoft Access ODBC Driver 3.4 (incluso in Microsoft Access 7.0) accetta le seguenti virgolette per l'analisi dell'istruzione SELECT:
Descrizione simbolo | Simboli |
---|---|
Nomi di campi e tabelle: |
[ ] o " " o ` ` |
Stringhe letterali: |
' ' |
Altri database potrebbero utilizzare convenzioni diverse.
All'esterno delle istruzioni LOAD
All'esterno dell'istruzione LOAD nel posto in cui QlikView prevede un'espressione, le virgolette doppie indicano un riferimento a una variabile e non un riferimento di campo. Se si utilizzano virgolette doppie, la stringa racchiusa verrà interpretata come una variabile e verrà utilizzato il valore della variabile.
Riferimenti di campo e riferimenti di tabella fuori contesto
Alcune funzioni di script fanno riferimento ai campi che sono già stati creati o che si trovano nell'output di un'istruzione LOAD, ad esempio Exists() e Peek(). Questi riferimenti vengono chiamati riferimento di campo fuori contesto, a differenza dei riferimenti di campo delle sorgente che si riferiscono ai campi in contesto, vale a dire, nella tabella di input dell'istruzione LOAD.
I riferimenti di campo e i riferimenti di tabella fuori contesto devono essere considerati valori letterali e perciò richiedono virgolette singole.
Differenze fra nomi e valori letterali
La differenza fra nomi e valori letterali diventa più chiara confrontando gli esempi seguenti:
Esempio:
'Sweden' as Country
Quando questa espressione viene utilizzata come parte dell'elenco di campi in un'istruzione LOAD o SELECT, la stringa di testo "Sweden" verrà caricata come valore di campo nel campo "Country" di QlikView".
Esempio:
"land" as Country
Quando questa espressione viene utilizzata come parte dell'elenco di campi in un'istruzione LOAD o SELECT, il contenuto del campo del database o della colonna della tabella denominata "land" verrà caricato come valori di campo nel campo QlikView "Country". Ciò significa che land viene considerato come un riferimento di campo.
Differenza fra numeri e stringhe letterali
La differenza fra numeri e stringhe letterali diventa più chiara confrontando gli esempi seguenti.
Esempio:
'12/31/96'
Quando questa stringa viene utilizzata come parte di un'espressione, in un primo passaggio verrà interpretata come la stringa di testo "12/31/96", che a sua volta può venire interpretata come una data se il formato della data è 'MM/DD/YY'. In tale caso, verrà memorizzata come valore duale sia con una rappresentazione numerica che con una rappresentazione testuale.
Esempio:
12/31/96
Quando questa stringa è utilizzata come parte di un'espressione, verrà interpretata numericamente come 12 divisa per 31 divisa per 96.
Uso di caratteri di delimitazione nelle stringhe
Quando una stringa contiene virgolette o altri caratteri che possono essere utilizzati come delimitatori, è importante indicare chiaramente dove la stringa comincia e dove finisce. Se la stringa non viene delimitata correttamente, lo script restituirà errori o caricherà i dati in modo non corretto.
Vi sono due modi per delimitare una stringa contenente caratteri di delimitazione.
Utilizzare un carattere specifico per delimitare la stringa
Scegliere un carattere non presente all'interno della stringa e utilizzarlo per delimitare l'intera stringa. QlikView utilizzerà quel carattere specifico per determinare l'inizio e la fine della stringa.
Per racchiudere l'intera stringa possono essere utilizzati i caratteri seguenti:
- Virgolette doppie " "
- Parentesi quadre [ ]
- Accenti gravi ` `
- Virgolette singole ' '
Esempio:
[Tabella '1 "2"]
Per delimitare la stringa sono usate le parentesi quadre. La stringa verrà caricata come: Tabella '1 "2"
'stringa `Nome1` "Nome2'
Per delimitare la stringa sono usate le virgolette singole. La stringa verrà caricata come: stringa `Nome1` "Nome2
Utilizzare caratteri di escape
I caratteri di escape sono un'istanza aggiuntiva del carattere utilizzato per delimitare la stringa. Devono essere aggiunti accanto a ogni istanza del carattere di delimitazione contenuto all'interno della stringa. Quando in una stringa vengono utilizzati tutti i tipi di caratteri di delimitazione, è necessario aggiungere un corrispondente carattere di escape accanto a ogni istanza del carattere utilizzato per delimitare la stringa. I caratteri di escape sono inoltre utili se si desidera utilizzare come delimitatore un carattere già presente nella stringa.
Come caratteri di escape possono essere utilizzati solo i caratteri seguenti:
- Virgolette doppie " "
- Parentesi quadre [ ]
- Virgolette singole ' '
Esempio:
"Michele ha detto ""Oggi c'è il sole""."
Se si delimita la stringa con le virgolette doppie " ", sarà necessario aggiungere un'ulteriore virgoletta doppia accanto a ogni virgoletta doppia presente all'interno della stringa.
Questa stringa verrà caricata come Michele ha detto "Oggi c'è il sole". L'uso della sequenza di escape "" indica all'editor di script di QlikView quali sono le virgolette doppie che fanno parte della stringa e quali delimitano la stringa. La virgoletta singola ' utilizzata nell'elisione c'è non necessita di escape perché non è il carattere utilizzato per delimitare la stringa.
Esempio:
'Michele ha detto: "Oggi c''è il sole".'
Se si delimita questa stringa con le virgolette singole, sarà necessario aggiungere un'ulteriore virgoletta singola accanto a ogni virgoletta singola presente all'interno della stringa.
Questa stringa verrà caricata come Michele ha detto "Oggi c'è il sole". La virgoletta doppia " utilizzata per riferire quanto detto da Michele non necessita di escape perché non è il carattere utilizzato per delimitare la stringa.
Esempio:
[Michele ha detto [Oggi c'è "il sole]].]
Le parentesi quadre [ ] seguono regole diverse rispetto agli altri due delimitatori. Se si desidera utilizzare le parentesi quadre come carattere di escape, è necessario aggiungere una parentesi quadra solo accanto a quella chiusa ] e non accanto a quella aperta [.
Questa stringa verrà caricata come Michele ha detto [Oggi c'è "il sole]. Solo la parentesi quadra chiusa ] necessita di escape. La virgoletta singola ' e quella doppia " utilizzate nella stringa non necessitano di escape perché non sono utilizzate per delimitare la stringa.