문자열 데이터 형식
데이터 형식은 string 0개 이상의 유니코드 문자 시퀀스를 나타냅니다.
참고
문자열 리터럴
쿼리 텍스트에서 데이터 형식의 리터럴을 string 인코딩하는 방법에는 여러 가지가 있습니다.
- 문자열을 큰따옴표(
")로 묶습니다."This is a string literal. Single quote characters (') don't require escaping. Double quote characters (") are escaped by a backslash (\)." - 문자열을 작은따옴표(
')로 묶습니다.'Another string literal. Single quote characters (') require escaping by a backslash (\). Double quote characters (") do not require escaping.'
위의 두 표현에서 백슬래시(\) 문자는 이스케이프를 나타냅니다.
백슬래시는 바깥쪽 따옴표 문자, 탭 문자(), 줄 바꿈 문자(\t) 및 자체(\n\\)를 이스케이프하는 데 사용됩니다.
참고
줄 바꿈 문자(\n)와 반환 문자(\r)는 따옴표로 묶지 않고 문자열 리터럴의 일부로 포함될 수 없습니다. 여러 줄 문자열 리터럴도 참조하세요.
축자 문자열 리터럴
축자 문자열 리터럴도 지원됩니다. 이 형식에서 백슬래시 문자(\)는 이스케이프 문자가 아니라 그 자체를 의미합니다.
- 큰따옴표(
"):로 묶습니다.@"This is a verbatim string literal that ends with a backslash\. Double quote characters (") are escaped by a double quote (")." - 작은따옴표(
')로 묶습니다.@'This is a verbatim string literal that ends with a backslash\. Single quote characters (') are escaped by a single quote (').'
참고
줄 바꿈 문자(\n)와 반환 문자(\r)는 따옴표로 묶지 않고 문자열 리터럴의 일부로 포함될 수 없습니다. 여러 줄 문자열 리터럴도 참조하세요.
문자열 리터럴 스플라이싱
둘 이상의 문자열 리터럴이 자동으로 조인되어 쿼리에 새 문자열 리터럴이 없는 경우 또는 공백과 주석으로만 구분됩니다.
예를 들어 다음 식은 모두 길이 13의 문자열을 생성합니다.
print strlen("Hello"', '@"world!"); // Nothing between them
print strlen("Hello" ', ' @"world!"); // Separated by whitespace only
print strlen("Hello"
// Comment
', '@"world!"); // Separated by whitespace and a comment
다중 선 문자열 리터럴
여러 줄 문자열 리터럴은 줄 바꿈() 및 반환\r(\n) 문자에 이스케이프가 필요하지 않은 문자열 리터럴입니다.
- 여러 줄 문자열 리터럴은 항상 "트리플 백틱 코드"(''')의 두 발생 사이에 나타납니다.
참고
- 여러 줄 문자열 리터럴은 이스케이프된 문자를 지원하지 않습니다. 축자 문자열 리터럴과 마찬가지로 여러 줄 문자열 리터럴은 줄 바꿈 및 반환 문자를 허용합니다.
- 여러 줄 문자열 리터럴은 난독 처리가 지원되지 않습니다.
예
// Simple string notation
print s1 = 'some string', s2 = "some other string"
// Strings that include single or double-quotes can be defined as follows
print s1 = 'string with " (double quotes)',
s2 = "string with ' (single quotes)"
// Strings with '\' can be prefixed with '@' (as in c#)
print myPath1 = @'C:\Folder\filename.txt'
// Escaping using '\' notation
print s = '\\n.*(>|\'|=|\")[a-zA-Z0-9/+]{86}=='
// Encode a C# program in a Kusto multi-line string
print program=```
public class Program {
public static void Main() {
System.Console.WriteLine("Hello!");
}
}```
볼 수 있듯이 문자열이 큰따옴표()"로 묶인 경우 작은따옴표(') 문자는 이스케이프할 필요가 없으며 그 반대로도 가능합니다. 이 메서드를 사용하면 컨텍스트에 따라 문자열을 더 쉽게 인용할 수 있습니다.
난독 변환된 문자열 리터럴
시스템은 쿼리를 추적하고 원격 분석 및 분석을 위해 저장합니다.
예를 들어 클러스터 소유자가 쿼리 텍스트를 사용할 수 있습니다. 쿼리 텍스트에 암호와 같은 비밀 정보가 포함된 경우 비공개로 유지해야 하는 정보가 누출될 수 있습니다. 이러한 누출이 발생하지 않도록 쿼리 작성자는 특정 문자열 리터럴을 난독 처리된 문자열 리터럴로 표시할 수 있습니다.
쿼리 텍스트의 이러한 리터럴은 자동으로 여러 개의 별(*) 문자로 대체되므로 나중에 분석할 수 없습니다.
중요
비밀 정보를 포함하는 모든 문자열 리터럴을 난독 분석된 문자열 리터럴로 표시합니다.
난독 처리된 문자열 리터럴은 "일반" 문자열 리터럴 h 을 사용하고 앞에 문자 앞에 추가하여 H 구성할 수 있습니다.
예를 들면 다음과 같습니다.
h'hello'
h@'world'
h"hello"
참고
대부분의 경우 문자열 리터럴의 일부만 비밀입니다. 이러한 경우 리터럴을 비밀이 아닌 부분과 비밀 부분으로 분할합니다. 그런 다음 비밀 부분만 난독으로 표시합니다.
예:
print x="https://contoso.blob.core.windows.net/container/blob.txt?"
h'sv=2012-02-12&se=2013-04-13T0...'