文字列データ型
データ型 string
は、0 個以上の Unicode 文字のシーケンスを表します。
文字列クエリ演算子の詳細については、「文字列演算子」を参照してください。
Note
- 内部的には、文字列は UTF-8 でエンコードされます。 無効な (UTF8 以外の) 文字は、インジェスト時に U+FFFD Unicode 置換文字に置き換えられます。
- Kusto には、1 つの文字と等価なデータ型がありません。 1 つの文字は、長さ 1 の文字列として表されます。
string
データ型を取り込むときに、レコード内の 1 つの文字列値が 1 MB を超える場合 (UTF-8 エンコードを使用して測定)、値は切り詰められ、取り込みは成功します。 列のエンコード ポリシーをMaxValueSize
変更することで、列を増やすことができます。- レコードまたはレコード全体の 1 つの文字列値が、許可されるデータ制限の 64 MB を超えた場合、インジェストは失敗します。
string
リテラル
二重引用符または単一引用符を使用して、クエリ テキスト内の文字列リテラルをエンコードできます。 二重引用符では、円記号 (\
) を使用して入れ子になった二重引用符文字をエスケープする必要があります。 単一引用符では、入れ子になった単一引用符文字をエスケープする必要があり、二重引用符をエスケープする必要はありません。
円記号を使用して、囲む引用符文字、タブ文字 (\t
)、改行文字 (\n
)、および円記号自体 (\\
) をエスケープします。
Note
改行文字 (\n
) と戻り文字 (\r
) は、複数行の文字列リテラルを使用しない限り、引用符で囲む必要があります。
逐語的な文字列リテラル
逐語的文字列リテラルもサポートされています。 この形式では、円記号 (\
) はそれ自体を表し、エスケープ文字ではありません。 文字列リテラルへの文字の @
前置は、逐語的な識別子として機能します。 逐語的な文字列リテラルでは、二重引用符は二重引用符でエスケープされ、一重引用符は一重引用符でエスケープされます。
例については、Verbatim 文字列を参照してください。
Note
改行文字 (\n
) と戻り文字 (\r
) は、複数行の文字列リテラルを使用しない限り、引用符で囲む必要があります。
複数行の文字列リテラル
リテラルの先頭と末尾に "3-backtick コード" (''') で複数行の文字列リテラルを示します。
例については、「複数行の文字列リテラル」を参照してください。
Note
- 複数行の文字列リテラルでは、改行文字 (
\n
) 文字と戻り文字 (\r
) 文字がサポートされます。 - 複数行の文字列リテラルは、エスケープ文字をサポートしていません。 逐語的な 文字列リテラルに似ています。
- 複数行の文字列リテラルは難読化をサポートしていません。
区切り文字列リテラルの連結
Kusto クエリでは、2 つ以上の隣接する文字列リテラルの間に分離がない場合、それらは自動的に結合され、新しい文字列リテラルが形成されます。 同様に、文字列リテラルが空白またはコメントのみで区切られている場合は、新しい文字列リテラルを形成するためにも結合されます。
例については、「連結文字列リテラル」を参照してください。
難読化文字列リテラル
クエリは、テレメトリと分析のために格納されます。 パスワードやシークレットなどの機密情報を保護するために、文字列を難読化文字列リテラルとしてマークできます。 これらのマークされた文字列は、クエリ テキスト内のアスタリスク (*
) に置き換えられます。
難読化された文字列リテラルは、標準または逐語的な文字列リテラルの前に、またはh
文字を前置することによって作成されます。H
例については、「難読化文字列リテラル」を参照してください。
重要
シークレット情報を含むすべての文字列リテラルを難読化文字列リテラルとしてマークします。
ヒント
状況によっては、文字列リテラルの一部にのみシークレット情報が含まれます。 このような場合は、リテラルをシークレット以外の部分とシークレット部分に分割します。 次に、シークレット部分のみに難読化のラベルを付けます。
例
引用符で囲まれた文字列リテラル
次の例では、単一引用符と二重引用符で囲まれた文字列リテラル内で引用符を使用する方法を示します。 詳細については、「文字列リテラル」を参照してください。
print
s1 = 'string with "double quotes"',
s2 = "string with 'single quotes'"
出力
s1 | s2 |
---|---|
"二重引用符" を含む文字列 | '単一引用符' の文字列 |
円記号がエスケープされた文字列リテラル
次の例では、特殊文字をエスケープするために円記号を使用して正規表現パターンを作成します。 詳細については、「文字列リテラル」を参照してください。
print pattern = '\\n.*(>|\'|=|\")[a-zA-Z0-9/+]{86}=='
出力
pattern |
---|
\n.*(>|'|=|")[a-zA-Z0-9/+]{86}== |
Unicode を使用した文字列リテラル
次の例は、文字列リテラルに Unicode 文字を含めるために円記号が必要であることを示しています。
print space = "Hello\u00A0World"
出力
空白 |
---|
Hello World |
逐語的文字列リテラル
次の例では、円記号がエスケープ文字ではなくパスの一部であるパスを作成します。 これを行うには、文字列記号が文字列 @
の先頭に付加され、逐語的な文字列リテラルが 作成されます。
print myPath = @'C:\Folder\filename.txt'
出力
myPath |
---|
C:\Folder\filename.txt |
複数行の文字列リテラル
次の例は、改行とタブを使用してコード ブロックのスタイルを設定する複数行の文字列リテラルの構文を示しています。 詳細については、「複数行の文字列リテラル」を参照してください。
print program = ```
public class Program {
public static void Main() {
System.Console.WriteLine("Hello!");
}
}```
出力
プログラム |
---|
public class Program { public static void Main() { System.Console.WriteLine("Hello!"); } } |
連結された文字列リテラル
次の式はすべて、長さ 13 の文字列を生成します。 詳細については、「区切り文字列リテラルの連結」を参照してください。
print
none = strlen("Hello"', '@"world!"),
whitespace = strlen("Hello" ', ' @"world!"),
whitespaceAndComment = strlen("Hello"
// Comment
', '@"world!"
);
出力
なし | whitespace | whitespaceAndComment |
---|---|---|
13 | 13 | 13 |
難読化文字列リテラル
次のクエリ出力では、 h
文字列が表示されます。 ただし、トレースまたはテレメトリでは、 h
文字列はアスタリスクで置き換えます。 詳細については、「難読化文字列リテラル」を参照してください。
print blob="https://contoso.blob.core.windows.net/container/blob.txt?"
h'sv=2012-02-12&se=2013-04-13T0...'
出力
blob (blob) |
---|
https://contoso.blob.core.windows.net/container/blob.txt?sv=2012-02-12&se=2013-04-13T0... |
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示