字符串数据类型

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

string 数据类型表示零个或多个 Unicode 字符的序列。

有关字符串查询运算符的信息,请参阅字符串运算符

注意

  • 在内部,字符串以 UTF-8 编码。 无效(非 UTF8)字符在引入时被替换为 U+FFFD Unicode 替换字符。
  • Kusto 没有与单个字符等效的数据类型。 单个字符表示为长度为 1 的字符串。
  • 在引入 string 数据类型时,如果记录中的单个字符串值超过 1MB(使用 UTF-8 编码测量),则该值将被截断并引入成功。 如果记录中的单一字符串值或整个记录超过允许的数据上限 64MB,则引入失败。
  • 在引入 string 数据类型时,如果记录中的单个字符串值超过 1MB(使用 UTF-8 编码测量),则该值将被截断并引入成功。 可以通过更改列的编码策略来增加列的 MaxValueSize
  • 如果记录中的单一字符串值或整个记录超过允许的数据上限 64MB,则引入失败。

string 文本

字符串字面量是用引号括起来的字符串。 可以使用双引号或单引号对查询文本中的字符串文本进行编码。 使用双引号时,必须使用反斜杠 (\) 转义嵌套的双引号字符。 使用单引号时,必须转义嵌套的单引号字符,但无需转义双引号。

使用反斜杠字符转义括住的引号字符、制表符 (\t)、换行符 (\n) 和反斜杠本身 (\\)。

注意

换行符 (\n) 和回车符 (\r) 必须用引号括住,除非使用多行字符串字面量

逐字字符串文本

逐字字符串字面量是以 @ 字符作为逐字标识符的字符串字面量。 在这种形式中,反斜杠字符 (\) 代表它自己,而不是转义字符。 在逐字字符串字面量中,双引号用双引号转义,单引号用单引号转义。

有关示例,请参阅逐字字符串

注意

换行符 (\n) 和回车符 (\r) 必须用引号括住,除非使用多行字符串字面量

多行字符串文本

通过在文本的开头和结尾使用“三个反撇号”(```) 来指示多行字符串字面量。

有关示例,请参阅多行字符串字面量

注意

  • 多行字符串字面量支持换行符 (\n) 和回车符 (\r)。
  • 多行字符串文本不支持转义字符。 与逐字字符串字面量类似。
  • 多行字符串文本不支持模糊处理

分隔字符串文本的串联

在 Kusto 查询中,如果两个或多个相邻字符串文本之间没有分隔,它们会自动合并以形成新的字符串文本。 同样,如果字符串文本仅由空格或注释分隔,则它们也会组合成新的字符串文本。

有关示例,请参阅串联字符串字面量

经过模糊处理的字符串文本

存储查询用于遥测和分析。 若要保护密码和机密等敏感信息,可以将字符串标记为模糊处理的字符串字面量。 这些被标记的字符串会以混淆形式记录下来,并在查询文本中用星号 (*) 替代。

模糊处理的字符串字面量是通过在标准或逐字字符串字面量前面添加 hH 字符创建的。

有关示例,请参阅模糊处理的字符串字面量

重要

将所有包含机密信息的字符串文本标记为经过模糊处理的字符串文本。

提示

在某些情况下,只有字符串字面量的一部分包含机密信息。 在这种情况下,请将字面量分为非机密部分和机密部分。 然后,仅将机密部分标记为模糊处理。

示例

带引号的字符串字面量

以下示例演示如何在单引号和双引号括住的字符串字面量中使用引号。 有关详细信息,请参阅字符串字面量

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"

输出

space
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!"
    );

输出

空格 whitespaceAndComment
13 13 13

模糊处理的字符串字面量

在以下查询输出中,结果中可以看到 h 字符串。 但是,在跟踪或遥测中,h 字符串以混淆形式存储,并在日志中用星号代替。 有关详细信息,请参阅模糊处理的字符串字面量

print blob="https://contoso.blob.core.chinacloudapi.cn/container/blob.txt?"
    h'sv=2012-02-12&se=2013-04-13T0...'

输出

blob
https://contoso.blob.core.chinacloudapi.cn/container/blob.txt?sv=2012-02-12&se=2013-04-13T0...