スクリプトでの引用符の使用
さまざまな方法により、スクリプト ステートメントで引用符を使用することができます。
LOAD ステートメントの内側での使用
LOAD ステートメントでは、項目名とテーブル名に、引用符として次の記号を使用する必要があります。
シンボルの説明 | シンボル | コード ポイント | 例 |
---|---|---|---|
二重引用符 |
" " | 34 | "string" |
角括弧 | [ ] | 91, 93 | [string] |
アクサン グラーブ | ` ` | 96 | `string` |
また、文字列リテラルには、引用符として次の記号を使用する必要があります。
シンボルの説明 | シンボル | コード ポイント | 例 |
---|---|---|---|
単一引用符 |
' ' |
39 | 'string' |
SELECT ステートメントの場合
ODBC ドライバによって解釈される SELECT ステートメントでは、引用符の使用方法は多少異なる場合があります。通常、項目名やテーブル名にはストレート二重引用符 (Alt + 0034) を使用し、リテラルにはストレート単一引用符 (Alt + 0039) を使用して、アクサン グラーブ の使用は避けるようにします。ただし、一部の ODBC ドライバでは、アクサン グラーブを引用符として使用できるだけでなく、むしろ優先するものもあります。このような場合、生成される SELECT ステートメントには、アクサン グラーブの引用符が含まれます。
Microsoft Access での使用例
Microsoft Access ODBC Driver 3.4 (Microsoft Access 7.0 に含まれる) では、SELECT ステートメントを分析する際に以下の引用符を使用できます。
シンボルの説明 | シンボル |
---|---|
項目名およびテーブル名: |
[ ]、" " または ` ` |
文字列リテラル: |
' ' |
データベースによっては、異なる規則が適用される場合があります。
LOAD ステートメントの外側での使用
LOAD ステートメントの外側で、QlikView が数式を予測する場所では、二重引用符は項目参照ではなく変数参照を意味します。二重引用符を使用すると、囲まれた文字列は変数として解釈され、変数の値が使用されます。
コンテキスト外の項目参照およびテーブル参照
一部のスクリプト関数は、作成済みの項目あるいは LOAD ステートメントのアウトプットに含まれる項目を参照します ( Exists() や Peek() など)。LOAD ステートメントの入力テーブルのような、コンテキスト内の項目を参照するソース項目参照に対して、これらの項目参照はコンテキスト外項目参照と呼ばれます。
コンテキスト外項目参照およびテーブル参照は、リテラルと見なす必要があるため、単一引用符が必要となります。
名前とリテラルの違い
次の数式を比較すると、名前とリテラルの違いがよりはっきりします。
'Sweden' as Country
この数式が LOAD ステートメントまたは SELECT ステートメントの項目リストの一部として使用された場合、QlikView の項目 "Country" には、テキスト文字列 Sweden が項目値としてロードされます。
"land" as Country
この数式が LOAD ステートメントまたは SELECT ステートメントの項目リストの一部として使用された場合、QlikView の項目 "Country" には、"land" という名前のデータベース項目またはテーブル列のコンテンツが項目値としてロードされます。つまり、land は項目参照として扱われます。
数値と文字列リテラルの違い
次の数式を比較すると、数値と文字列リテラルの違いがよりはっきりします。
'12/31/96'
この文字列が数式の一部として使用された場合、まずテキスト文字列 "12/31/96" として解釈され、次に日付形式が 'MM/DD/YY' の場合には日付として解釈されます。この場合、数値表現とテキスト表現の両方を持つデュアル値として保存されます。
12/31/96
この文字列が数式の一部として使用された場合、12 ÷ 31 ÷ 96 と数値的に解釈されます。
文字列での引用符の使用
引用符として使用できる文字が文字列に含まれている場合、文字列を引用するときに、文字列の開始位置と終了位置を明確に示すことが重要です。文字列が適切に引用されていないと、スクリプトが失敗するか、不正なデータのロードが行われます。
引用符を含む文字列を引用するには、2 つの方法があります。
特定の引用符を使用して文字列を引用する
文字列内で使用されていない引用符を選択して、それを文字列全体の引用に使用します。QlikView では特定の引用符を使用して、文字列の開始および終了の位置を指定します。
以下の引用符のいずれも、文字列全体の引用に使用できます。
- 二重引用符 " "
- 角括弧 [ ]
- アクサン グラーブ ` `
- 単一引用符 ' '
[テーブル '1 "2"]
文字列の引用に角括弧が使用されています。文字列は次のようにロードされます。テーブル '1 "2"
'string `Name1` "Name2'
文字列の引用に単一引用符が使用されています。文字列は「string `Name1` "Name2」とロードされます。
エスケープ文字を使用する
エスケープ文字は、文字列の引用に使用される引用符の追加インスタンスです。文字列内に表示される引用符のインスタンスごとに、その横にエスケープ文字を追加する必要があります。すべての引用符が文字列内で使用されている場合、文字列の引用に使用されるものと同じタイプの引用符の横に、エスケープ文字を追加する必要があります。文字列内ですでに使用されている引用符を使用する場合も、エスケープ文字を使用できます。
以下の引用符のみ、エスケープ文字として使用できます。
- 二重引用符 " "
- 角括弧 [ ]
- 単一引用符 ' '
"マイケルは ""美しい日だ"" と言った。"
二重引用符 " " を使用している文字列を引用する場合は、文字列内で使用されている二重引用符の横に、さらに二重引用符を追加する必要があります。
この文字列は「マイケルは "美しい日だ" と言った。」としてロードされます。エスケープ文字 "" を使用することによって、QlikView スクリプト エディターでは、文字列の一部となっている二重引用符および文字列の終了を示す引用符を判断します。短縮形 It's で使用されている単一引用符 ' は、文字列の引用に使用される引用符ではないので、エスケープ文字を追加する必要はありません。
'Michael said: "It''s a beautiful day".'
単一引用符を使用しているこの文字列を引用する場合は、文字列内で使用されているそれぞれの単一引用符の横に、さらに単一引用符を追加する必要があります。
この文字列は「マイケルは "美しい日だ" と言った。」としてロードされます。マイケルが言った内容の引用に使用されている二重引用符 " は、文字列の引用に使用される引用符ではないので、エスケープ文字を追加する必要はありません。
[マイケルは ["美しい日だ]] と言った。]
角括弧 [ ] は、他の 2 つの引用符は異なる動作をします。角括弧をエスケープ文字として使用する場合は、右の角括弧 ] の横にのみ角括弧を追加する必要があり、左の角括弧 [ の横には追加しません。
この文字列は「マイケルは ["美しい日だ] と言った。」としてロードされます。右の角括弧 ] にのみエスケープ文字が追加されます。文字列内で使用される単一引用符 ' および二重引用符 " は、文字列の引用に使用されていないので、エスケープ文字を追加する必要はありません。