Använda citattecken i skriptet
Du kan använda citattecken i skriptsatser på många olika sätt.
Inuti LOAD-satser
I en LOAD-sats används följande tecken som citattecken för fältnamn och tabellnamn:
Symbolbeskrivning | Symbol | Kodpunkt | Exempel |
---|---|---|---|
dubbla citattecken |
" " | 34 | "sträng" |
hakparenteser | [ ] | 91, 93 | [sträng] |
grav accent | ` ` | 96 | `sträng` |
Och följande tecken används som citattecken för stränglitteraler:
Symbolbeskrivning | Symbol | Kodpunkt | Exempel |
---|---|---|---|
enkla citattecken |
' ' |
39 | 'sträng' |
I SELECT-satser
För en SELECT-sats som tolkas av ODBC-drivrutinen förhåller det sig dock något annorlunda. Normalt bör du använda raka dubbla citattecken (Alt + 0034) för fält- och tabellnamn och raka enkla citattecken (Alt + 0039) för litteraler. Undvik att använda grav accent. Det är emellertid så att vissa ODBC-drivrutiner inte bara accepterar, utan rentav föredrar grava accenter som citattecken. I så fall innehåller den genererade SELECT-satsen sneda citattecken.
Exempel: citattecken i Microsoft Access
Microsoft Access ODBC Driver 3.4 (ingår i Microsoft Access 7.0) accepterar följande citattecken när SELECT-satsen analyseras:
Symbolbeskrivning | Symboler |
---|---|
Fält- och tabellnamn: |
[ ] eller " " eller ` ` |
Stränglitteraler: |
' ' |
Andra databaser kan ha andra förutsättningar.
Utanför LOAD-satser
Utanför en LOAD-sats, på ställen där QlikView förväntar ett uttryck anger dubbla citattecken en variabelreferens och inte en fältreferens. Om du använder dubbla citattecken kommer den inneslutna strängen att tolkas som en variabel och värden på variabeln används.
Fältreferenser och tabellreferenser utanför kontexten
En del skriptfunktioner hänvisar till fält som redan har skapats, eller som finns i utdata till en LOAD-sats, till exempel Exists() och Peek(). Dessa fältreferenser kallas fältreferenser utan kontext i motsats till källfältsreferenser som hänvisar till fält som finns i kontexten, det vill säga indatatabellen till LOAD-satsen.
Fältreferenser och tabellreferenser utanför sammanhanget bör ses som litteraler och behöver därmed enkla citattecken.
Skillnaden mellan namn och litteraler
Skillnaden mellan namn och litteraler framstår tydligare om man jämför följande exempel:
Exempel:
'Sweden' as Country
När detta uttryck används som del av fältlistan i en LOAD- eller SELECT-sats, läses textsträngen ”Sweden” in som fältvärde i QlikView-fältet ”Country”.
Exempel:
"land" as Country
När detta uttryck används som del av fältlistan i LOAD- eller SELECT-satsen, läses innehållet i databasfältet eller tabellkolumnen med namnet "land" in som fältvärden i QlikView-fältet "Country". land behandlas således som en fältreferens.
Skillnaden mellan tal och stränglitteraler
Skillnaden mellan tal och stränglitteraler framstår tydligare om man jämför följande exempel.
Exempel:
'12/31/96'
När denna sträng används som en del av ett uttryck tolkas den i ett första steg som textsträngen "12/31/96", vilken i sin tur kan tolkas som ett datum om datumformatet är "MM/DD/YY". I det här fallet sparas den som ett dualt värde med både numerisk representation och textrepresentation.
Exempel:
12/31/96
När den här strängen används som en del av ett uttryck tolkas den numeriskt som 12 delat med 31 delat med 96.
Använda citattecken in en sträng
När en sträng innehåller tecken som kan användas som citattecken är det viktigt att tydligt ange var en sträng börjar och slutar när den citatmarkeras. Om strängen inte citatmarkeras rätt misslyckas skriptet eller så laddas inte data korrekt.
Det finns två metoder för att citatmarkera en sträng som innehåller citattecken.
Använd ett specifikt citattecken för att citatmarkera strängen.
Välj ett citattecken som inte används inuti strängen, och använd det för att citatmarkera hela strängen. QlikView använder det specifika citattecknet för att avgöra var strängen börjar och slutar.
Samtliga citattecken nedan kan användas för att citatmarkera hela strängen:
- dubbla citattecken " "
- hakparenteser [ ]
- grav accent ` `
- enkla citattecken ' '
Exempel:
[Table '1 "2"]
Hakparenteser används för att citatmarkera strängen. Strängen laddas som: Table '1 "2"
'string `Name1` "Name2'
Enkla citattecken används för att citatmarkera strängen. Strängen laddas som: string `Name1` "Name2
Använd undantagstecken
Undantagstecken är ytterligare en instans av citattecken som används för att citatmarkera strängen. De måste läggas till vid varje instans av det citattecken som visas inuti strängen. När alla citattecken används inuti en sträng måste du lägga till undantagstecken vid sidan om samma typ av citattecken som används för att citatmarkera strängen. Undantagstecken kan också användas om du vill använda ett citattecken som redan används i en sträng.
Endast citattecknen nedan kan användas som undantagstecken:
- dubbla citattecken " "
- hakparenteser [ ]
- enkla citattecken ' '
Exempel:
"Michael sa ""It's a beautiful day""."
Du måste lägga till ytterligare ett dubbelt citattecken vid sidan om varje dubbla citattecken som används inuti strängen om du citatmarkerar strängen med dubbla citattecken " ".
Strängen laddas som Michael sa "It's a beautiful day". Genom att använda "", förstår QlikView skriptredigeraren vilka dubbla citattecken som tillhör strängen och vilket citattecken som anger strängens slut. Det enkla citattecknet ' som används i förkortningen It's behöver inget undantag eftersom det inte är det tecknet som används för att citatmarkera strängen.
Exempel:
'Michael sa: "It''s a beautiful day".'
Du måste lägga till ytterligare ett enkelt citattecken vid sidan om varje enkla citattecken som används inuti strängen om du citatmarkerar strängen med enkla citattecken ' '.
Strängen laddas som Michael sa "It's a beautiful day". Det dubbla citattecknet " som används för att citatmarkera vad Michael sa behöver inte undantas eftersom det inte är det tecken som används för att citatmarkera strängen.
Exempel:
[Michael sa [It's a "beautiful day]].]
Hakparenteser beter sig annorlunda än de andra två citattecknen. Om du vill använda hakparenteser som undantagstecken ska du bara lägga till ytterligare en hakparentes vid sidan om den högra hakparentesen ]. Inte bredvid den vänstra hakparentesen [.
Strängen laddas som Michael sa [It's a "beautiful day]. Bara den högra hakparentesen undantas. Det enkla citattecknet ' och det dubbla citattecknet " som används i strängen behöver inte undantas eftersom de inte citatmarkerar strängen.