文字列操作のための関数
文字列の検索と文字列の置換に関する関数は、それぞれ別に説明されています。
empty
入力文字列が空かどうかをチェックします。文字列は、空白やヌルバイトを含んでいても、少なくとも1バイトを含んでいる場合、非空と見なされます。
構文
引数
x
— 入力値。String。
戻り値
- 空の文字列の場合は
1
を、非空の文字列の場合は0
を返します。UInt8。
例
結果:
notEmpty
入力文字列が非空かどうかをチェックします。文字列は、空白やヌルバイトを含んでいても、少なくとも1バイトを含んでいる場合、非空と見なされます。
構文
引数
x
— 入力値。String。
戻り値
- 非空の文字列の場合は
1
を、空の文字列の場合は0
を返します。UInt8。
例
結果:
length
文字列の長さをバイト単位で返します。文字やUnicodeコードポイントではなくバイトで計算します。この関数は配列にも使用できます。
エイリアス: OCTET_LENGTH
構文
パラメータ
戻り値
- 文字列または配列
s
の長さ(バイト単位)。UInt64。
例
クエリ:
結果:
クエリ:
結果:
lengthUTF8
文字列の長さをUnicodeコードポイント単位で返します。文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
エイリアス:
CHAR_LENGTH
CHARACTER_LENGTH
構文
パラメータ
s
— 有効なUTF-8エンコードされたテキストを含む文字列。String。
戻り値
- 文字列
s
の長さ(Unicodeコードポイント単位)。UInt64。
例
クエリ:
結果:
left
文字列 s
の指定されたoffset
から左側の部分文字列を返します。
構文
パラメータ
s
— 部分文字列を計算するための文字列。StringまたはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の左側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合、空の文字列。
例
クエリ:
結果:
クエリ:
結果:
leftUTF8
UTF-8エンコードされた文字列 s
の指定された offset
から左側の部分文字列を返します。
構文
パラメータ
s
— 部分文字列を計算するためのUTF-8エンコードされた文字列。StringまたはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の左側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合、空の文字列。
例
クエリ:
結果:
クエリ:
結果:
leftPad
文字列を左側からスペースまたは指定された文字列でパディングし、結果の文字列が指定されたlength
に達するまで繰り返します。
構文
エイリアス: LPAD
引数
string
— パディングするべき入力文字列。String。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列をパディングする文字列。String。オプション。指定されていない場合、入力文字列はスペースでパディングされます。
戻り値
- 指定された長さの左パディングされた文字列。String。
例
結果:
leftPadUTF8
文字列を左側からスペースまたは指定された文字列でパディングし、結果の文字列が指定された長さに達するまで繰り返します。 leftPad はバイト単位で文字列の長さを測定しますが、この関数ではコードポイント単位で測定します。
構文
引数
string
— パディングするべき入力文字列。String。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列をパディングする文字列。String。オプション。指定されていない場合、入力文字列はスペースでパディングされます。
戻り値
- 指定された長さの左パディングされた文字列。String。
例
結果:
right
文字列 s
の指定された offset
から右側の部分文字列を返します。
構文
パラメータ
s
— 部分文字列を計算するための文字列。StringまたはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の右側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合、空の文字列。
例
クエリ:
結果:
クエリ:
結果:
rightUTF8
UTF-8エンコードされた文字列 s
の指定された offset
から右側の部分文字列を返します。
構文
パラメータ
s
— 部分文字列を計算するためのUTF-8エンコードされた文字列。StringまたはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の右側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合、空の文字列。
例
クエリ:
結果:
クエリ:
結果:
rightPad
文字列を右側からスペースまたは指定された文字列でパディングし、結果の文字列が指定されたlength
に達するまで繰り返します。
構文
エイリアス: RPAD
引数
string
— パディングするべき入力文字列。String。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列をパディングする文字列。String。オプション。指定されていない場合、入力文字列はスペースでパディングされます。
戻り値
- 指定された長さの右パディングされた文字列。String。
例
結果:
rightPadUTF8
文字列を右側からスペースまたは指定された文字列でパディングし、結果の文字列が指定された長さに達するまで繰り返します。rightPadはバイト単位で文字列の長さを測定しますが、この関数はコードポイント単位で測定します。
構文
引数
string
— パディングするべき入力文字列。String。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列をパディングする文字列。String。オプション。指定されていない場合、入力文字列はスペースでパディングされます。
戻り値
- 指定された長さの右パディングされた文字列。String。
例
結果:
compareSubstrings
2つの文字列を辞書式に比較します。
構文
引数
string1
— 比較する最初の文字列。Stringstring2
- 比較する2番目の文字列。Stringstring1_offset
— 比較開始位置(ゼロベース)を指定するstring1
の位置。UInt*。string2_offset
— 比較開始位置(ゼロベース)を指定するstring2
の位置。UInt*。num_bytes
— 両方の文字列で比較する最大バイト数。string_offset
+num_bytes
が入力文字列の終端を超える場合、num_bytes
はそれに応じて減少します。UInt*。
戻り値
- -1 —
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] の場合。 - 0 —
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] の場合。 - 1 —
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] の場合。
例
クエリ:
結果:
lower
文字列内のASCIIラテン記号を小文字に変換します。
構文*
エイリアス: lcase
パラメータ
input
: 文字列型 String。
戻り値
- String データ型の値。
例
クエリ:
upper
文字列内のASCIIラテン記号を大文字に変換します。
構文
エイリアス: ucase
パラメータ
input
— 文字列型 String。
戻り値
- String データ型の値。
例
クエリ:
lowerUTF8
文字列を小文字に変換します。文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出することはできません。例えばトルコ語の場合、結果は正確でない可能性があります(i/İ と i/I)。もしUTF-8バイトシーケンスの長さが、コードポイントの大文字と小文字で異なる場合(ẞ
と ß
のように)、このコードポイントに対して結果が不正確になる可能性があります。
構文
パラメータ
input
— 文字列型 String。
戻り値
- String データ型の値。
例
クエリ:
結果:
upperUTF8
文字列を大文字に変換します。文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出することはできません。例えばトルコ語の場合、結果は正確でない可能性があります(i/İ と i/I)。もしUTF-8バイトシーケンスの長さが、コードポイントの大文字と小文字で異なる場合(ẞ
と ß
のように)、このコードポイントに対して結果が不正確になる可能性があります。
構文
パラメータ
input
— 文字列型 String。
戻り値
- String データ型の値。
例
クエリ:
結果:
isValidUTF8
バイトのセットが有効なUTF-8エンコードされたテキストを構成している場合、1を返します。そうでない場合は0を返します。
構文
パラメータ
input
— 文字列型 String。
戻り値
- バイトのセットが有効なUTF-8エンコードされたテキストを構成している場合は
1
を、そうでない場合は0
を返します。
クエリ:
結果:
toValidUTF8
無効なUTF-8文字を �
(U+FFFD) 文字で置き換えます。連続して無効な文字は1つの置換文字にまとめられます。
構文
引数
input_string
— String データ型のオブジェクトで表された任意のバイトセット。
戻り値
- 有効なUTF-8文字列。
例
repeat
指定された回数だけ文字列を連結します。
構文
エイリアス: REPEAT
引数
s
— 繰り返す文字列。String。n
— 文字列を繰り返す回数。UInt* または Int*。
戻り値
文字列 s
が n
回繰り返された文字列。もし n
<= 0 の場合、関数は空の文字列を返します。String。
例
結果:
space
指定された回数だけスペース(
)を連結します。
構文
エイリアス: SPACE
。
引数
n
— スペースを繰り返す回数。UInt* または Int*。
戻り値
文字列
が n
回繰り返された文字列。もし n
<= 0 の場合、関数は空の文字列を返します。String。
例
クエリ:
結果:
reverse
文字列のバイトシーケンスを反転します。
reverseUTF8
文字列のUnicodeコードポイントのシーケンスを反転します。有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
concat
与えられた引数を連結します。
構文
引数
任意の型の値。
String または FixedString でない型の引数は、デフォルトのシリアル化を使用して文字列に変換されます。これによりパフォーマンスが低下するため、非 String/FixedString 引数の使用は推奨されません。
戻り値
引数を連結して作成された文字列。
いずれかの引数が NULL
の場合、関数は NULL
を返します。
例
クエリ:
結果:
クエリ:
結果:
||
演算子文字列連結には concat()
の簡潔な代替として ||
演算子を使用してください。例えば、'Hello, ' || 'World!'
は concat('Hello, ', 'World!')
と同等です。
concatAssumeInjective
concat と同様ですが、concat(s1, s2, ...) → sn
が単射であると仮定します。GROUP BY の最適化に使用できます。
関数が単射と呼ばれるのは、異なる引数に対して異なる結果を返すときです。言い換えれば: 異なる引数は決して同じ結果を生成しません。
構文
引数
String または FixedString 型の値。
戻り値
引数を連結して作成された文字列。
いずれかの引数が NULL
の場合、関数は NULL
を返します。
例
入力テーブル:
結果:
concatWithSeparator
指定された区切り文字で与えられた文字列を連結します。
構文
エイリアス: concat_ws
引数
- sep — 区切り文字。定数のStringまたはFixedString。
- exprN — 連結される表現。非StringまたはFixedString型の引数は、デフォルトのシリアル化を使用して文字列に変換されます。これによりパフォーマンスが低下するため、非 String/FixedString 引数の使用は推奨されません。
戻り値
引数を連結して作成された文字列。
いずれかの引数が NULL
の場合、関数は NULL
を返します。
例
結果:
concatWithSeparatorAssumeInjective
concatWithSeparator
のようですが、concatWithSeparator(sep, expr1, expr2, expr3...) → result
が単射であると仮定します。GROUP BYの最適化に使用できます。
関数が単射と呼ばれるのは、異なる引数に対して異なる結果を返すときです。言い換えれば: 異なる引数は決して同じ結果を生成しません。
substring
文字列 s
の部分文字列を返します。部分文字列は指定されたバイトインデックス offset
から始まります。バイトの数え方は1から始まります。もし offset
が 0 の場合は、空の文字列が返されます。もし offset
が負の数である場合、部分文字列は文字列の始まりではなく、文字列の終わりからpos
文字の位置から始まります。オプションの引数 length
では、返される部分文字列の最大バイト数を指定できます。
構文
エイリアス:
substr
mid
byteSlice
引数
s
— 部分文字列を計算するための文字列。String、FixedString または Enumoffset
—s
の部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長。(U)Int*。オプション。
戻り値
インデックス offset
から始まる s
の部分文字列で、length
バイト分です。String。
例
結果:
substringUTF8
文字列 s
の部分文字列を返します。部分文字列は指定されたバイトインデックス offset
で始まります。バイトの数え方は1から始まります。もし offset
が 0 の場合は、空の文字列が返されます。もし offset
が負の数である場合、部分文字列は文字列の終わりからpos
文字の位置から始まります。オプションの引数 length
では、返される部分文字列の最大バイト数を指定できます。
文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を計算するための文字列。String、FixedString または Enumoffset
—s
の部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長。(U)Int*。オプション。
戻り値
インデックス offset
から始まる s
の部分文字列で、length
バイト分です。
実装の詳細
文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
substringIndex
count
回のデリミタ delim
の出現前の s
の部分文字列を返します。これは、Spark または MySQL のように動作します。
構文
エイリアス: SUBSTRING_INDEX
引数
- s — 部分文字列を抽出するための文字列。String。
- delim — スプリットする文字。String。
- count — 部分文字列を抽出する前に数えるデリミタの出現回数。countが正の場合は、最終のデリミタの左側のすべてを返します(左から数えて)。countが負の場合は、最終のデリミタの右側のすべてを返します(右から数えて)。UInt または Int
例
結果:
substringIndexUTF8
count
回のデリミタ delim
の出現前の s
の部分文字列を返します。Unicodeコードポイント専用です。
文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を抽出するための文字列。String。delim
— スプリットする文字。String。count
— 部分文字列を抽出する前に数えるデリミタの出現回数。countが正の場合は、最終のデリミタの左側のすべてを返します(左から数えて)。countが負の場合は、最終のデリミタの右側のすべてを返します(右から数えて)。UInt または Int
戻り値
delim
の count
回の出現前の s
の部分文字列。String。
実装の詳細
文字列が有効なUTF-8エンコードされたテキストを含んでいると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
appendTrailingCharIfAbsent
文字列 s
が非空であり、s
が文字 c
で終わっていない場合、c
を文字列 s
に追加します。
構文
convertCharset
エンコーディング from
からエンコーディング to
に変換された文字列 s
を返します。
構文
base32Encode
stringを使用して文字列をエンコードします。
構文
引数
plaintext
— String 列または定数。
戻り値
- 引数のエンコードされた値を含む文字列。String または FixedString。
例
結果:
base32Decode
文字列を受け取り、Base32 エンコーディングを使用してそれをデコードします。
構文
引数
encoded
— String または FixedString。文字列が有効なBase32エンコードされた値でない場合、例外がスローされます。
戻り値
- 引数のデコードされた値を含む文字列。String。
例
結果:
tryBase32Decode
base32Decode
と同様ですが、エラーが発生した場合は空の文字列を返します。
構文
パラメータ
encoded
: String または FixedString。文字列が有効なBase32エンコードされた値でない場合、エラーが発生したときに空の文字列を返します。
戻り値
- 引数のデコードされた値を含む文字列。
例
クエリ:
base58Encode
Base58 を使用して文字列をエンコードします。"Bitcoin" アルファベットを使用します。
構文
引数
plaintext
— String 列または定数。
戻り値
- 引数のエンコードされた値を含む文字列。String または FixedString。
例
結果:
base58Decode
文字列を受け取り、Base58 エンコーディング方式を使用してデコードします。"Bitcoin" アルファベットを使用します。
構文
引数
encoded
— String または FixedString。文字列が有効な Base58 エンコード値でない場合、例外がスローされます。
返される値
- 引数のデコード値を含む文字列。String。
例
結果:
tryBase58Decode
base58Decode
のように動作しますが、エラーが発生した場合は空の文字列を返します。
構文
引数
encoded
: String または FixedString。文字列が有効な Base58 エンコード値でない場合、エラー時に空の文字列を返します。
返される値
- 引数のデコード値を含む文字列。
例
クエリ:
base64Encode
文字列または FixedString を base64 でエンコードします。RFC 4648 に従います。
エイリアス: TO_BASE64
。
構文
引数
plaintext
— String カラムまたは定数。
返される値
- 引数のエンコード値を含む文字列。
例
結果:
base64URLEncode
URL(String または FixedString)を、URL 特有の修正を行った base64 でエンコードします。RFC 4648 に従います。
構文
引数
url
— String カラムまたは定数。
返される値
- 引数のエンコード値を含む文字列。
例
結果:
base64Decode
文字列を受け取り、base64 からデコードします。RFC 4648 に従い、エラーの場合は例外をスローします。
エイリアス: FROM_BASE64
。
構文
引数
encoded
— String カラムまたは定数。文字列が有効な Base64 エンコード値でない場合、例外がスローされます。
返される値
- 引数のデコード値を含む文字列。
例
結果:
base64URLDecode
base64 でエンコードされた URL を受け取り、URL 特有の修正を行った state からデコードします。RFC 4648 に従い、エラーの場合は例外をスローします。
構文
引数
encodedURL
— String カラムまたは定数。文字列が有効な Base64 エンコード値でない場合、例外がスローされます。
返される値
- 引数のデコード値を含む文字列。
例
結果:
tryBase64Decode
base64Decode
のように動作しますが、エラーが発生した場合は空の文字列を返します。
構文
引数
encoded
— String カラムまたは定数。文字列が有効な Base64 エンコード値でない場合、空の文字列を返します。
返される値
- 引数のデコード値を含む文字列。
例
クエリ:
tryBase64URLDecode
base64URLDecode
のように動作しますが、エラーが発生した場合は空の文字列を返します。
構文
引数
encodedURL
— String カラムまたは定数。文字列が有効な Base64 エンコード値でない場合、空の文字列を返します。
返される値
- 引数のデコード値を含む文字列。
例
クエリ:
endsWith
文字列 str
が suffix
で終わるかどうかを返します。
構文
endsWithUTF8
文字列 str
が suffix
で終わるかどうかを返します。endsWithUTF8
と endsWith
の違いは、endsWithUTF8
が UTF-8 文字によって str
と suffix
をマッチングさせることです。
構文
例
結果:
startsWith
文字列 str
が prefix
で始まるかどうかを返します。
構文
例
startsWithUTF8
文字列 str
が prefix
で始まるかどうかを返します。startsWithUTF8
と startsWith
の違いは、startsWithUTF8
が UTF-8 文字によって str
と suffix
をマッチングさせることです。
例
結果:
trim
指定された文字を文字列の先頭または末尾から削除します。特に指定されていない場合、関数は空白(ASCII 文字 32)を削除します。
構文
引数
返される値
先頭および/または末尾の指定された文字がない文字列。String。
例
結果:
trimLeft
文字列の先頭から空白(ASCII 文字 32)の連続する発生を削除します。
構文
エイリアス: ltrim
。
引数
input_string
— トリムする文字列。String。trim_characters
— 削除する文字。省略可能。String。指定されていない場合、' '
(単一の空白)がトリム文字として使用されます。
返される値
先頭に共通の空白がない文字列。String。
例
結果:
trimRight
文字列の末尾から空白(ASCII 文字 32)の連続する発生を削除します。
構文
エイリアス: rtrim
。
引数
input_string
— トリムする文字列。String。trim_characters
— 削除する文字。省略可能。String。指定されていない場合、' '
(単一の空白)がトリム文字として使用されます。
返される値
末尾に共通の空白がない文字列。String。
例
結果:
trimBoth
文字列の両端から空白(ASCII 文字 32)の連続する発生を削除します。
構文
エイリアス: trim
。
引数
input_string
— トリムする文字列。String。trim_characters
— 削除する文字。省略可能。String。指定されていない場合、' '
(単一の空白)がトリム文字として使用されます。
返される値
先頭と末尾に共通の空白がない文字列。String。
例
結果:
CRC32
文字列の CRC32 チェックサムを返します。CRC-32-IEEE 802.3 多項式と初期値 0xffffffff
(zlib 実装)を使用します。
結果の型は UInt32 です。
CRC32IEEE
文字列の CRC32 チェックサムを返します。CRC-32-IEEE 802.3 多項式を使用します。
結果の型は UInt32 です。
CRC64
文字列の CRC64 チェックサムを返します。CRC-64-ECMA 多項式を使用します。
結果の型は UInt64 です。
normalizeUTF8NFC
文字列を NFC 正規化形式 に変換し、文字列が有効な UTF8 エンコードのテキストであると仮定します。
構文
引数
words
— UTF8 エンコードの入力文字列。String。
返される値
- NFC 正規化形式に変換された文字列。String。
例
結果:
normalizeUTF8NFD
文字列を NFD 正規化形式 に変換し、文字列が有効な UTF8 エンコードのテキストであると仮定します。
構文
引数
words
— UTF8 エンコードの入力文字列。String。
返される値
- NFD 正規化形式に変換された文字列。String。
例
結果:
normalizeUTF8NFKC
文字列を NFKC 正規化形式 に変換し、文字列が有効な UTF8 エンコードのテキストであると仮定します。
構文
引数
words
— UTF8 エンコードの入力文字列。String。
返される値
- NFKC 正規化形式に変換された文字列。String。
例
結果:
normalizeUTF8NFKD
文字列を NFKD 正規化形式 に変換し、文字列が有効な UTF8 エンコードのテキストであると仮定します。
構文
引数
words
— UTF8 エンコードの入力文字列。String。
返される値
- NFKD 正規化形式に変換された文字列。String。
例
結果:
encodeXMLComponent
XML 内で特別な意味を持つ文字をエスケープし、その後 XML テキストノードまたは属性に配置できるようにします。
置き換えられる文字は以下の通りです: <
, &
, >
, "
, '
。
XML と HTML の文字エンティティ参照のリスト も参照してください。
構文
引数
x
— 入力文字列。String。
返される値
- エスケープされた文字列。String。
例
結果:
decodeXMLComponent
XML 内で特別な意味を持つ部分文字列のエスケープを解除します。これらの部分文字列は: "
&
'
>
<
この関数は、数値文字参照を Unicode 文字に置き換えます。両方の十進法(例えば ✓
)および16進数(例えば ✓
)形式がサポートされています。
構文
引数
x
— 入力文字列。String。
返される値
- エスケープ解除された文字列。String。
例
結果:
decodeHTMLComponent
HTML 内で特別な意味を持つ部分文字列のエスケープを解除します。例えば: ℏ
>
♦
♥
<
など。
この関数は、数値文字参照を Unicode 文字に置き換えます。両方の十進法(例えば ✓
)および16進数(例えば ✓
)形式がサポートされています。
構文
引数
x
— 入力文字列。String。
返される値
- エスケープ解除された文字列。String。
例
結果:
extractTextFromHTML
この関数は、HTML または XHTML からプレーンテキストを抽出します。
完全には HTML、XML、または XHTML の仕様に準拠していませんが、実装は合理的に正確かつ高速です。ルールは以下の通りです:
- コメントはスキップされます。例:
<!-- test -->
。コメントは-->
で終わる必要があります。ネストされたコメントは許可されません。 ノート:<!-->
および<!--->
のような構文は HTML では有効なコメントではありませんが、他のルールによってスキップされます。 - CDATA はそのまま貼り付けられます。ノート: CDATA は XML/XHTML 特有であり、「ベストエフォート」ベースで処理されます。
script
およびstyle
要素は、その全コンテンツを削除します。ノート: 閉じタグはコンテンツ内に表示されないと仮定されます。例えば、JS 文字列リテラルでは"<\/script>"
のようにエスケープする必要があります。 ノート: コメントや CDATA はscript
またはstyle
内で可能ですが、その中では閉じタグは見つかりません。例:<script><![CDATA[</script>]]></script>
。しかし、コメント内ではまだ検索されます。時には複雑になる場合があります:<script>var x = "<!--"; </script> var y = "-->"; alert(x + y);</script>
ノート:script
およびstyle
が XML 名前空間の名前である場合、それらは通常のscript
またはstyle
要素のように扱われません。例:<script:a>Hello</script:a>
。 ノート: 閉じタグ名の後には空白があることが可能ですが、前にはありません:</script >
ですが< / script>
は無効です。- 他のタグまたはタグのような要素は、内部コンテンツがない限りスキップされます。例:
<a>.</a>
ノート: この HTML は不正なものと予想されています:<a test=">"></a>
ノート:<>
,<!>
など、タグのようなものもスキップされます。 ノート: 終わりがないタグは入力の終わりまでスキップされます:<hello
- HTML および XML エンティティはデコードされません。エンティティは別の関数で処理する必要があります。
- テキスト内の空白は、特定のルールによって圧縮または挿入されます。
- 先頭および末尾の空白が削除されます。
- 連続する空白は圧縮されます。
- ただし、テキストが他の要素によって区切られており、空白がない場合は、空白が挿入されます。
- 不自然な場合が生じる可能性があります:
Hello<b>world</b>
,Hello<!-- -->world
- HTML には空白がありませんが、関数はそれを挿入します。また、Hello<p>world</p>
,Hello<br>world
も考慮してください。この行動は、データ分析において合理的です。例えば、HTML を単語のバガーに変換するため。
- 空白を適切に処理するには、
<pre></pre>
および CSS のdisplay
およびwhite-space
プロパティのサポートが必要です。
構文
引数
x
— 入力テキスト。String。
返される値
- 抽出されたテキスト。String。
例
最初の例は、いくつかのタグとコメントを含んでおり、空白の処理も示しています。 2 番目の例は、CDATA およびスクリプトタグの処理を示しています。 3 番目の例では、url 関数によって受信したフル HTML レスポンスからテキストが抽出されています。
結果:
ascii
文字列 s
の最初の文字の ASCII コードポイント(Int32 として)を返します。
s
が空である場合、結果は 0 です。最初の文字が ASCII 文字でない場合、または UTF-16 の Latin-1 サプリメント範囲に含まれていない場合、結果は未定義です。
構文
soundex
文字列の Soundex コード を返します。
構文
引数
val
— 入力値。String
返される値
- 入力値の Soundex コード。String
例
結果:
punycodeEncode
文字列の Punycode 表現を返します。 文字列は UTF8 エンコードされている必要があります。そうでない場合、動作は未定義です。
構文
引数
val
— 入力値。String
返される値
- 入力値の Punycode 表現。String
例
結果:
punycodeDecode
Punycode エンコードされた文字列の UTF8 エンコードされたプレーンテキストを返します。 有効な Punycode エンコード文字列が与えられない場合、例外がスローされます。
構文
引数
val
— Punycode エンコード文字列。String
返される値
- 入力値のプレーンテキスト。String
例
結果:
tryPunycodeDecode
punycodeDecode
のように動作しますが、有効な Punycode エンコード文字列が与えられない場合は空の文字列を返します。
idnaEncode
国際化ドメイン名のアプリケーションにおける国際化 (IDNA) メカニズムに従って、ドメイン名の ASCII 表現(ToASCII アルゴリズム)を返します。 入力文字列は UTF エンコードされ、ASCII 文字列に変換可能である必要があります。そうでない場合、例外がスローされます。 ノート: パーセントデコーディングやタブ、スペース、制御文字のトリミングは実行されません。
構文
引数
val
— 入力値。String
返される値
- IDNA メカニズムに従った入力値の ASCII 表現。String
例
結果:
tryIdnaEncode
idnaEncode
のように動作しますが、エラーが発生した場合は例外をスローするのではなく、空の文字列を返します。
idnaDecode
国際化ドメイン名のアプリケーションにおける国際化 (IDNA) メカニズムに従い、ドメイン名の Unicode(UTF-8)表現(ToUnicode アルゴリズム)を返します。
エラーが発生した場合(例えば、入力が無効な場合)、入力文字列が返されます。
idnaEncode()
と idnaDecode()
の反復適用は、ケース正規化のため、元の文字列を必ずしも返すわけではありません。
構文
引数
val
— 入力値。String
返される値
- IDNA メカニズムに従った入力値の Unicode(UTF-8)表現。String
例
結果:
byteHammingDistance
二つのバイト文字列間の ハミング距離 を計算します。
構文
例
結果:
エイリアス: mismatches
stringJaccardIndex
二つのバイト文字列間の ジャカード類似度指数 を計算します。
構文
例
結果:
stringJaccardIndexUTF8
stringJaccardIndex と同様ですが、UTF8 エンコードの文字列に対して使用します。
editDistance
二つのバイト文字列間の 編集距離 を計算します。
構文
例
結果:
エイリアス: levenshteinDistance
editDistanceUTF8
二つの UTF8 文字列間の 編集距離 を計算します。
構文
例
結果:
エイリアス: levenshteinDistanceUTF8
damerauLevenshteinDistance
二つのバイト文字列間の ダメラウ・レヴィンシュタイン距離 を計算します。
構文
例
結果:
jaroSimilarity
二つのバイト文字列間の ジャロ類似度 を計算します。
構文
例
結果:
jaroWinklerSimilarity
二つのバイト文字列間の ジャロ・ウィンクラー類似度 を計算します。
構文
例
結果:
initcap
各単語の最初の文字を大文字にし、残りを小文字に変換します。単語は、非英数字の文字で区切られた英数字の文字の連続です。
initCap
は各単語の最初の文字のみを大文字に変換するため、アポストロフィや大文字を含む単語に対して予期しない動作が見られることがあります。例えば:
は次を返します:
これは既知の動作であり、現在修正する予定はありません。
構文
引数
val
— 入力値。String。
返される値
- 各単語の最初の文字が大文字に変換された
val
。String。
例
クエリ:
結果:
initcapUTF8
stringJaccardIndex と同様に、initcapUTF8
は各単語の最初の文字を大文字にし、残りを小文字に変換します。文字列が有効な UTF-8 エンコードのテキストであると仮定します。
この仮定が破られた場合、例外はスローされず、結果は未定義になります。
この関数は言語を検出しません。例えば、トルコ語の場合、結果が完全に正確でない可能性があります(i/İ と i/I)。 UTF-8 バイトシーケンスの大文字と小文字の長さが異なる場合、結果はこのコードポイントに対して不正確なものになります。
構文
引数
val
— 入力値。String。
返される値
- 各単語の最初の文字が大文字に変換された
val
。String。
例
クエリ:
結果:
firstLine
複数行の文字列から最初の行を返します。
構文
引数
val
— 入力値。String
返される値
- 行区切りがない場合、入力値全体を返すか、入力値の最初の行。String
例
結果:
stringCompare
2つの文字列を辞書式順序で比較します。
構文
引数
string1
— 比較する最初の文字列。Stringstring2
- 比較する2番目の文字列。Stringstring1_offset
— 文字列string1
の比較を開始する位置(ゼロベース)。オプション、正の数。string2_offset
— 文字列string2
の比較を開始する位置(ゼロベース)。オプション、正の数。num_bytes
— 両方の文字列で比較する最大バイト数。string_offset
+num_bytes
が入力文字列の終わりを超える場合、num_bytes
はそれに応じて減少します。
返される値
- -1 —
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] であり、かつstring1_offset
< len(string1
) およびstring2_offset
< len(string2
) の場合。 もしstring1_offset
>= len(string1
) かつstring2_offset
< len(string2
) の場合。 - 0 —
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] であり、かつstring1_offset
< len(string1
) およびstring2_offset
< len(string2
) の場合。 もしstring1_offset
>= len(string1
) かつstring2_offset
>= len(string2
) の場合。 - 1 —
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] であり、かつstring1_offset
< len(string1
) およびstring2_offset
< len(string2
) の場合。 もしstring1_offset
< len(string1
) かつstring2_offset
>= len(string2
) の場合。
例
結果:
結果:
sparseGrams
与えられた文字列のすべての部分文字列を見つけます。部分文字列の長さは少なくとも n
であり、部分文字列の境界にある (n-1)-グラムのハッシュが、部分文字列の内部にあるいかなる (n-1)-グラムよりも厳密に大きい場合です。
crc32 をハッシュ関数として使用します。
構文
引数
s
— 入力文字列。Stringmin_ngram_length
— 抽出される ngram の最小長さ。デフォルトおよび最小値は 3 です。max_ngram_length
— 抽出される ngram の最大長さ。デフォルト値は 100 です。「min_ngram_length」未満であってはいけません。
返される値
例
結果:
sparseGramsUTF8
与えられた文字列のすべての部分文字列を見つけます。部分文字列の長さは少なくとも n
であり、部分文字列の境界にある (n-1)-グラムのハッシュが、部分文字列の内部にあるいかなる (n-1)-グラムよりも厳密に大きい場合です。
crc32 をハッシュ関数として使用します。
UTF-8文字列を期待し、無効なUTF-8シーケンスの場合は例外をスローします。
構文
引数
s
— 入力文字列。Stringmin_ngram_length
— 抽出される ngram の最小長さ。デフォルトおよび最小値は 3 です。max_ngram_length
— 抽出される ngram の最大長さ。デフォルト値は 100 です。「min_ngram_length」未満であってはいけません。
返される値
例
結果:
sparseGramsHashes
与えられた文字列のすべての部分文字列のハッシュを見つけます。部分文字列の長さは少なくとも n
であり、部分文字列の境界にある (n-1)-グラムのハッシュが、部分文字列の内部にあるいかなる (n-1)-グラムよりも厳密に大きい場合です。
crc32 をハッシュ関数として使用します。
構文
引数
s
— 入力文字列。Stringmin_ngram_length
— 抽出される ngram の最小長さ。デフォルトおよび最小値は 3 です。max_ngram_length
— 抽出される ngram の最大長さ。デフォルト値は 100 です。「min_ngram_length」未満であってはいけません。
返される値
例
結果:
sparseGramsHashesUTF8
与えられた文字列のすべての部分文字列のハッシュを見つけます。部分文字列の長さは少なくとも n
であり、部分文字列の境界にある (n-1)-グラムのハッシュが、部分文字列の内部にあるいかなる (n-1)-グラムよりも厳密に大きい場合です。
crc32 をハッシュ関数として使用します。
UTF-8文字列を期待し、無効なUTF-8シーケンスの場合は例外をスローします。
構文
引数
s
— 入力文字列。Stringmin_ngram_length
— 抽出される ngram の最小長さ。デフォルトおよび最小値は 3 です。max_ngram_length
— 抽出される ngram の最大長さ。デフォルト値は 100 です。「min_ngram_length」未満であってはいけません。
返される値
例
結果:
stringBytesUniq
文字列内の異なるバイトの数をカウントします。
構文
引数
s
— 分析する文字列。String。
返される値
- 文字列内の異なるバイトの数。UInt16。
例
結果:
stringBytesEntropy
文字列内のバイト分布のシャノンエントロピーを計算します。
構文
引数
s
— 分析する文字列。String。
返される値
- 文字列内のバイト分布のシャノンエントロピー。Float64。
例
結果: