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