Stosowanie znaków cudzysłowu w skrypcie
Istnieją różne sposoby korzystania z cudzysłowów w instrukcjach skryptów.
Wewnątrz instrukcji LOAD
W instrukcji LOAD należy używać następujących symboli jako cudzysłowów:
Opis | Symbol | Pozycja kodu | Przykład |
---|---|---|---|
podwójne cudzysłowy |
" " | 34 | "ciąg znaków" |
nawiasy kwadratowe | [ ] | 91, 93 | [ciąg znaków] |
akcenty | ` ` | 96 | `ciąg znaków` |
Opis | Symbol | Pozycja kodu | Przykład |
---|---|---|---|
pojedyncze cudzysłowy |
' ' |
39 | 'ciąg znaków' |
W instrukcjach SELECT
W przypadku instrukcji SELECT interpretowanej przez sterownik ODBC składnia może być inna. Zazwyczaj należy używać podwójnych cudzysłowów prostych (Alt + 0034) w przypadku nazw pól i tabel oraz pojedynczych cudzysłowów (Alt + 0039) w przypadku literałów, a unikać używania akcentów. Niektóre sterowniki ODBC akceptują jednak używanie akcentów jako cudzysłowów, a nawet preferują taki zapis. W takich przypadkach wygenerowane instrukcje SELECT mogą zawierać akcenty jako cudzysłowy.
Przykład cudzysłowów w programie Microsoft Access
Sterownik Microsoft Access ODBC Driver 3.4 (zawarty w aplikacjiMicrosoft Access 7.0) podczas analizowania instrukcji SELECT akceptuje następujące cudzysłowy:
Nazwy pól i tabel:
- [ ]
- " "
- ` `
Literały ciągu:
- ' '
W innych bazach danych mogą być stosowane inne konwencje.
Poza instrukcjami LOAD
Poza instrukcją LOAD we wszystkich miejscach, gdzie Qlik Sense oczekuje wyrażenia, podwójne cudzysłowy oznaczają odniesienie do zmiennej, a nie do pola. Każdy ciąg znaków ujęty w podwójne cudzysłowy jest interpretowany jako zmienna i używana jest wartość tak odczytanej zmiennej.
Pozakontekstowe odniesienia do pól i tabel
Niektóre funkcje skryptu w aplikacji odnoszą się do pól, które zostały utworzone wcześniej lub znajdują się w danych wyjściowych instrukcji LOAD, na przykład Exists() i Peek(). Takie odniesienia do pól noszą nazwę odniesień pozakontekstowych, w odróżnieniu od odniesień do pól źródłowych znajdujących się w kontekście, czyli w tabeli wejściowej instrukcji LOAD.
Pozakontekstowe odniesienia do pól i tabel należy traktować jako literały, a tym samym zapisywać je w pojedynczych cudzysłowach.
Różnica między nazwami a literałami
W zrozumieniu różnicy między nazwami a literałami pomoże porównanie następujących przykładów:
Przykład:
'Sweden' as Country
Użycie takiego wyrażenia na liście pól instrukcji LOAD lub SELECT spowoduje załadowanie ciągu znaków „Sweden” jako wartości pola Qlik Sense o nazwie „Country”.
Przykład:
"land" as Country
Użycie takiego wyrażenia na liście pól instrukcji LOAD lub SELECT spowoduje załadowanie zawartości pola bazy danych lub kolumny tabeli o nazwie „land” jako wartości pola Qlik Sense o nazwie „Country”. Oznacza to, że ciąg znaków land będzie traktowany jako odniesienie do pola.
Różnica między liczbami a literałami ciągu
W zrozumieniu różnicy między liczbami a literałami ciągu pomoże porównanie następujących przykładów.
Przykład:
'12/31/96'
Taki ciąg znaków użyty w wyrażeniu zostanie w pierwszej kolejności zinterpretowany jako ciąg znaków „12/31/96”, co może zostać zinterpretowane jako data, o ile używany jest format daty „MM/DD/YY”. W takim przypadku wynik zostanie zapisany jako wartość podwójna mająca zarówno reprezentację liczbową, jak i tekstową.
Przykład:
12/31/96
Taki ciąg znaków użyty w wyrażeniu zostanie zinterpretowany liczbowo, czyli jako 12 podzielone przez 31 podzielone przez 96.
Stosowanie cudzysłowów w ciągu znaków
Gdy ciąg znaków zawiera znaki, które mogą być używane jako cudzysłowy, wówczas w przypadku cytowania takiego ciągu bardzo ważne jest wyraźne wskazanie miejsca rozpoczęcia tego ciągu znaków i miejsca jego zakończenia. Jeśli ciąg znaków nie zostanie poprawnie zacytowany, wówczas wykonanie skryptu nie powiedzie się lub załaduje dane niepoprawnie.
Istnieją dwie metody cytowania ciągu znaków, który zawiera znaki cudzysłowów.
Zastosowanie konkretnego znaku cudzysłowu w celu zacytowania ciągu znaków
Należy wybrać znak cudzysłowu, który nie jest używany w ciągu znaków, i użyć go w celu cytowania całego ciągu znaków. Qlik Sense wykorzysta ten konkretny znak cudzysłowu w celu ustalenia miejsca rozpoczęcia i końca ciągu znaków.
W celu zacytowania całego ciągu znaków można użyć dowolnych z poniższych cudzysłowów:
- Cudzysłowy podwójne " "
- Nawiasy kwadratowe [ ]
- Akcenty ` `
- Cudzysłowy pojedyncze ' '
Przykład:
[Table '1 "2"]
W celu cytowania całego ciągu znaków są używane nawiasy kwadratowe. Ciąg znaków jest ładowany jako: Tabela '1 "2"
'string `Name1` "Name2'
W celu cytowania ciągu znaków używane są pojedyncze cudzysłowy. Ciąg znaków jest ładowany jako: ciąg znaków `Nazwa1` "Nazwa2
Stosowanie znaków ucieczki
Znaki ucieczki stanowią dodatkowe wystąpienie znaku cudzysłowu używanego do cytowania ciągu znaków. Muszą być dodawane obok każdego wystąpienia znaku cudzysłowu, który występuje w ciągu znaków. Gdy wszystkie znaki cudzysłowów są używane w ciągu znaków, wówczas należy dodać znaki ucieczki obok tego samego typu znaku cudzysłowu, który jest używany do cytowania ciągu znaków. Znaki ucieczki mogą być także stosowane, gdy wymagane jest użycie znaku cudzysłowu, który jest już używany w ciągu znaków.
Tylko poniższe znaki mogą być używane jako znaki ucieczki:
- Cudzysłowy podwójne " "
- Nawiasy kwadratowe [ ]
- Cudzysłowy pojedyncze ' '
Przykład:
"Michael said ""It's a beautiful day""."
Jeśli ciąg znaków jest cytowany za pomocą cudzysłowów podwójnych " ", wówczas należy dodać dodatkowy znak cudzysłowu podwójnego obok każdego znaku cudzysłowu podwójnego, który występuje w ciągu znaków.
Ten ciąg znaków jest ładowany jako Michael said "It's a beautiful day". (Michael powiedział "Jaki piękny dziś dzień".). Użycie znaku ucieczki "" powoduje, że edytor ładowania danych Qlik Sense wie, które znaki podwójnego cudzysłowu stanowią część łańcucha, a które oznaczają koniec ciągu znaków. Znak pojedynczego cudzysłowu ' użyty w angielskim skrócie It's nie musi być zmieniany znakiem ucieczki, ponieważ nie jest to znak używany do cytowania ciągu znaków.
Przykład:
'Michael said: "It''s a beautiful day".'
Jeśli ciąg znaków jest cytowany za pomocą cudzysłowów pojedynczych, wówczas należy dodać dodatkowy znak cudzysłowu pojedynczego obok każdego znaku cudzysłowu pojedynczego, który występuje w ciągu znaków.
Ten ciąg znaków jest ładowany jako Michael said "It's a beautiful day". (Michael powiedział "Jaki piękny dziś dzień".). Znak podwójnego cudzysłowu " użyty w celu cytowania tego, co powiedział Michael, nie musi być zmieniany znakiem ucieczki, ponieważ nie jest to znak używany do cytowania ciągu znaków.
Przykład:
[Michael said [It's a "beautiful day]].]
Nawiasy kwadratowe [ ] działają inaczej niż dwa pozostałe znaki cytowania. Jeśli wymagane jest użycie nawiasów kwadratowych jako znaków ucieczki, należy dodać dodatkowy nawias kwadratowy tylko obok prawego nawiasu kwadratowego ], a nie obok lewego nawiasu kwadratowego [.
Ten ciąg znaków jest ładowany jako Michael said [It's a "beautiful day]. (Michael powiedział [Jaki "piękny dziś dzień].). Zmiana za pomocą znaku ucieczki następuje tylko względem prawego nawiasu kwadratowego ]. Znak pojedynczego cudzysłowu ' i znak podwójnego cudzysłowu " użyte w ciągu znaków nie muszą być zmieniane znakiem ucieczki, ponieważ nie są używane w celu cytowania ciągu znaków.