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 per le virgolette occorre utilizzare i simboli seguenti:
Descrizione | Simbolo | Punto del codice | Esempio |
---|---|---|---|
virgolette doppie |
" " | 34 | "stringa" |
parentesi quadre | [ ] | 91, 93 | [stringa] |
accenti gravi | ` ` | 96 | `stringa` |
Descrizione | Simbolo | Punto del codice | Esempio |
---|---|---|---|
virgolette singole |
' ' |
39 | 'stringa' |
Nelle istruzioni SELECT
L'utilizzo potrebbe variare per un'istruzione SELECT interpretata da un driver ODBC. 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:
Nomi di campi e tabelle:
- [ ]
- " "
- ` `
Stringhe letterali:
- ' '
Altri database potrebbero utilizzare convenzioni diverse.
All'esterno delle istruzioni LOAD
All'esterno dell'istruzione LOAD, dove Qlik Sense 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 Qlik Sense".
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 Qlik Sense "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. Qlik Sense 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:
[Table '1 "2"]
Per delimitare la stringa sono usate le parentesi quadre. La stringa verrà caricata come: Tabella '1 "2"
'string `Name1` "Name2'
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:
"Michael said ""It's a beautiful day""."
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.
Questo stringa verrà caricata come Michele ha detto "Oggi c'è il sole". Se si utilizza il carattere di escape "" l'editor caricamento dati di Qlik Sense comprende quali virgolette doppie fanno parte della stringa e quali indicano le estremità della stringa. La virgoletta singola (l'apostrofo) utilizzata nella contrazione c'è non necessita di escape perché non è il carattere utilizzato per delimitare la stringa.
Esempio:
'Michael said: "It''s a beautiful day".'
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.
Questo 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:
[Michael said [It's a "beautiful day]].]
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.