跳到主要内容
跳到主要内容

字符串处理函数

用于 搜索 字符串和 替换 字符串的函数单独描述。

empty

检查输入字符串是否为空。如果字符串包含至少一个字节,即使该字节是空格或空字节,也被认为是非空的。

该函数也适用于 数组UUIDs

语法

参数

返回值

  • 对于空字符串返回 1,对于非空字符串返回 0UInt8

示例

结果:

notEmpty

检查输入字符串是否非空。如果字符串包含至少一个字节,即使该字节是空格或空字节,也被认为是非空的。

该函数也适用于 数组UUIDs

语法

参数

返回值

  • 对于非空字符串返回 1,对于空字符串返回 0UInt8

示例

结果:

length

返回字符串的字节长度,而不是字符或 Unicode 代码点的长度。该函数也适用于数组。

别名:OCTET_LENGTH

语法

参数

返回值

  • 字符串或数组 s 的字节长度。 UInt64

示例

查询:

结果:

查询:

结果:

lengthUTF8

返回字符串的 Unicode 代码点长度,而不是字节或字符的长度。假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

别名:

  • CHAR_LENGTH
  • CHARACTER_LENGTH

语法

参数

  • s — 包含有效的 UTF-8 编码文本的字符串。 字符串

返回值

  • 字符串 s 的 Unicode 代码点长度。 UInt64

示例

查询:

结果:

left

返回从左侧开始的字符串 s 的子字符串,指定 offset

语法

参数

返回值

  • 对于正 offset:从字符串左侧开始的 s 的子字符串,长度为 offset 个字节。
  • 对于负 offset:从字符串左侧开始的 s 的子字符串,长度为 length(s) - |offset| 个字节。
  • 如果 length 为 0,则返回空字符串。

示例

查询:

结果:

查询:

结果:

leftUTF8

返回带有指定 offset 的 UTF-8 编码字符串 s 的子字符串,从左开始。

语法

参数

返回值

  • 对于正 offset:从字符串左侧开始的 s 的子字符串,长度为 offset 个字节。
  • 对于负 offset:从字符串左侧开始的 s 的子字符串,长度为 length(s) - |offset| 个字节。
  • 如果 length 为 0,则返回空字符串。

示例

查询:

结果:

查询:

结果:

leftPad

从左侧用空格或指定字符串(如有需要可多次填充)填充字符串,直到结果字符串达到指定的 length

语法

别名:LPAD

参数

  • string — 输入字符串,需进行填充。 字符串
  • length — 结果字符串的长度。 UInt 或 Int。如果该值小于输入字符串长度,则输入字符串缩短为 length 个字符。
  • pad_string — 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则用空格填充输入字符串。

返回值

  • 给定长度的左填充字符串。 字符串

示例

结果:

leftPadUTF8

从左侧用空格或指定字符串(如有需要可多次填充)填充字符串,直到结果字符串达到给定长度。与 leftPad 不同,后者测量字符串长度为字节,而此字符串长度按代码点测量。

语法

参数

  • string — 输入字符串,需进行填充。 字符串
  • length — 结果字符串的长度。 UInt 或 Int。如果该值小于输入字符串长度,则输入字符串缩短为 length 个字符。
  • pad_string — 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则用空格填充输入字符串。

返回值

  • 给定长度的左填充字符串。 字符串

示例

结果:

返回从右侧开始的字符串 s 的子字符串,指定 offset

语法

参数

返回值

  • 对于正 offset:从字符串右侧开始的 s 的子字符串,长度为 offset 个字节。
  • 对于负 offset:从字符串右侧开始的 s 的子字符串,长度为 length(s) - |offset| 个字节。
  • 如果 length 为 0,则返回空字符串。

示例

查询:

结果:

查询:

结果:

rightUTF8

返回 UTF-8 编码字符串 s 的子字符串,指定 offset 从右侧开始。

语法

参数

返回值

  • 对于正 offset:从字符串右侧开始的 s 的子字符串,长度为 offset 个字节。
  • 对于负 offset:从字符串右侧开始的 s 的子字符串,长度为 length(s) - |offset| 个字节。
  • 如果 length 为 0,则返回空字符串。

示例

查询:

结果:

查询:

结果:

rightPad

从右侧用空格或指定字符串(如有需要可多次填充)填充字符串,直到结果字符串达到指定的 length

语法

别名:RPAD

参数

  • string — 输入字符串,需进行填充。 字符串
  • length — 结果字符串的长度。 UInt 或 Int。如果该值小于输入字符串长度,则输入字符串缩短为 length 个字符。
  • pad_string — 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则用空格填充输入字符串。

返回值

  • 给定长度的右填充字符串。 字符串

示例

结果:

rightPadUTF8

从右侧用空格或指定字符串(如有需要可多次填充)填充字符串,直到结果字符串达到给定长度。与 rightPad 不同,后者测量字符串长度为字节,而此字符串长度按代码点测量。

语法

参数

  • string — 输入字符串,需进行填充。 字符串
  • length — 结果字符串的长度。 UInt 或 Int。如果该值小于输入字符串长度,则输入字符串缩短为 length 个字符。
  • pad_string — 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则用空格填充输入字符串。

返回值

  • 给定长度的右填充字符串。 字符串

示例

结果:

compareSubstrings

对两个字符串进行词典序比较。

语法

参数

  • string1 — 第一个要比较的字符串。 字符串
  • string2 - 第二个要比较的字符串。 字符串
  • string1_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

参数

返回值

示例

查询:

结果:

upper

将字符串中的 ASCII 拉丁字母转换为大写。

语法

别名:ucase

参数

返回值

示例

查询:

结果:

lowerUTF8

将字符串转换为小写,假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

备注

不识别语言,例如对于土耳其语,结果可能不完全正确 (i/İ vs. i/I)。如果 UTF-8 字节序列的长度对于某个代码点的大写和小写不同(如 ß),该代码点的结果可能不正确。

语法

参数

返回值

示例

查询:

结果:

upperUTF8

将字符串转换为大写,假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

备注

不识别语言,例如对于土耳其语,结果可能不完全正确 (i/İ vs. i/I)。如果 UTF-8 字节序列的长度对于某个代码点的大写和小写不同(如 ß),该代码点的结果可能不正确。

语法

参数

返回值

示例

查询:

结果:

isValidUTF8

返回 1,如果字节集构成有效的 UTF-8 编码文本,否则返回 0。

语法

参数

返回值

  • 如果字节集构成有效的 UTF-8 编码文本,则返回 1,否则返回 0

查询:

结果:

toValidUTF8

(U+FFFD) 字符替换无效的 UTF-8 字符。连续的无效字符会合并为一个替换字符。

语法

参数

  • input_string — 任何以 字符串 数据类型表示的字节集。

返回值

  • 一个有效的 UTF-8 字符串。

示例

结果:

repeat

将字符串连接自身指定次数。

语法

别名:REPEAT

参数

返回值

一个包含字符串 s 重复 n 次的字符串。如果 n <= 0,则此函数返回空字符串。 字符串

示例

结果:

space

将空格( )连接自身指定次数。

语法

别名:SPACE

参数

返回值

包含字符串 重复 n 次的字符串。如果 n <= 0,则此函数返回空字符串。 字符串

示例

查询:

结果:

reverse

反转字符串中的字节序列。

reverseUTF8

反转字符串中的 Unicode 代码点序列。假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义。

concat

连接给定的参数。

语法

参数

任意类型的值。

类型不是 字符串固定字符串 的参数会使用其默认序列化转换为字符串。由于这样会降低性能,不建议使用非字符串/固定字符串参数。

返回值

通过连接参数创建的字符串。

如果任何参数为 NULL,则函数返回 NULL

示例

查询:

结果:

查询:

结果:

备注
|| 运算符

使用 || 运算符进行字符串连接,作为 concat() 的简洁替代方案。例如,'Hello, ' || 'World!' 相当于 concat('Hello, ', 'World!')

concatAssumeInjective

类似于 concat,但假设 concat(s1, s2, ...) → sn 是单射。如果用于 GROUP BY 优化,可以使用。

如果函数对于不同的参数返回不同的结果,则称该函数为单射。换句话说,不同的参数永远不会产生相同的结果。

语法

参数

类型为字符串或固定字符串的值。

返回值

通过连接参数创建的字符串。

如果任何参数值为 NULL,则函数返回 NULL

示例

输入表:

结果:

concatWithSeparator

使用给定的分隔符连接指定的字符串。

语法

别名:concat_ws

参数

  • sep — 分隔符。常量 字符串固定字符串
  • exprN — 要连接的表达式。类型不是 字符串固定字符串 的参数会使用其默认序列化转换为字符串。由于这样会降低性能,不建议使用非字符串/固定字符串参数。

返回值

通过连接参数创建的字符串。

如果任何参数值为 NULL,则函数返回 NULL

示例

结果:

concatWithSeparatorAssumeInjective

类似于 concatWithSeparator,但假设 concatWithSeparator(sep, expr1, expr2, expr3...) → result 是单射。如果用于 GROUP BY 优化,可以使用。

substring

返回字符串 s 中在指定字节索引 offset 开始的子字符串。字节计数从 1 开始。如果 offset 为 0,返回空字符串。如果 offset 为负数,则子字符串从字符串末尾向前开始 pos 个字符,而不是从开头。可选参数 length 指定返回的子字符串的最大字节数。

语法

别名:

  • substr
  • mid
  • byteSlice

参数

返回值

一个在索引 offset 处开始,长度为 length 的子字符串。 字符串

示例

结果:

substringUTF8

返回字符串 s 中在指定字节索引 offset 开始的子字符串,专门针对 Unicode 代码点。字节计数从 1 开始。如果 offset0,返回空字符串。如果 offset 为负数,则子字符串从字符串末尾向前开始 pos 个字符,而不是从开头。可选参数 length 指定返回的子字符串的最大字节数。

假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

语法

参数

返回值

一个在索引 offset 处开始,长度为 length 的子字符串。

实现细节

假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

示例

substringIndex

返回字符串 s 中在 count 次出现分隔符 delim 之前的子字符串,类似于 Spark 或 MySQL。

语法

别名:SUBSTRING_INDEX

参数

  • s — 要提取子字符串的字符串。 字符串
  • delim — 分隔的字符。 字符串
  • count — 提取子字符串前要计算的分隔符出现次数。如果 count 为正,则返回最后一个分隔符左侧的所有内容(从左计数)。如果 count 为负,则返回最后一个分隔符右侧的所有内容(从右计数)。 UInt 或 Int

示例

结果:

substringIndexUTF8

返回字符串 s 中在 count 次出现分隔符 delim 之前的子字符串,特别针对 Unicode 代码点。

假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

语法

参数

  • s — 要提取子字符串的字符串。 字符串
  • delim — 分隔的字符。 字符串
  • count — 提取子字符串前要计算的分隔符出现次数。如果 count 为正,则返回最后一个分隔符左侧的所有内容(从左计数)。如果 count 为负,则返回最后一个分隔符右侧的所有内容(从右计数)。 UInt 或 Int

返回值

一个字符串 字符串,它是在 count 次出现 delim 之前的 s 的子字符串。

实现细节

假设字符串包含有效的 UTF-8 编码文本。如果违反此假设,则不会抛出异常,结果是未定义的。

示例

appendTrailingCharIfAbsent

如果 s 非空且不以字符 c 结尾,则将字符 c 附加到字符串 s

语法

convertCharset

返回从编码 from 转换为编码 to 的字符串 s

语法

base32Encode

使用 Base32 编码字符串。

语法

参数

返回值

示例

结果:

base32Decode

接受一个字符串并使用 Base32 编码方案进行解码。

语法

参数

返回值

  • 一个包含参数解码值的字符串。 字符串

示例

结果:

tryBase32Decode

base32Decode,但在发生错误时返回空字符串。

语法

参数

  • encoded字符串固定字符串。如果字符串不是有效的 Base32 编码值,则在发生错误时返回空字符串。

返回值

  • 一个包含参数解码值的字符串。

示例

查询:

结果:

base58Encode

使用 Base58 在“比特币”字母表中对字符串进行编码。

语法

参数

返回值

示例

结果:

base58Decode

接受一个字符串并使用 Base58 编码方案,在“比特币”字母表中进行解码。

语法

参数

返回值

  • 一个包含参数解码值的字符串。 字符串

示例

结果:

tryBase58Decode

base58Decode,但在发生错误时返回空字符串。

语法

参数

  • encoded字符串固定字符串。如果字符串不是有效的 Base58 编码值,则在发生错误时返回空字符串。

返回值

  • 一个包含参数解码值的字符串。

示例

查询:

结果:

base64Encode

将字符串或固定字符串编码为 base64,符合 RFC 4648

别名:TO_BASE64

语法

参数

返回值

  • 一个包含参数编码值的字符串。

示例

结果:

base64URLEncode

将 URL(字符串或固定字符串)编码为 base64,并进行 URL 特定的修改,符合 RFC 4648

语法

参数

返回值

  • 一个包含参数编码值的字符串。

示例

结果:

base64Decode

接受一个字符串并将其从 base64 解码,符合 RFC 4648。在发生错误时抛出异常。

别名:FROM_BASE64

语法

参数

  • encoded字符串 列或常量。如果字符串不是有效的 base64 编码值,则抛出异常。

返回值

  • 一个包含参数解码值的字符串。

示例

结果:

base64URLDecode

接受一个 base64 编码的 URL,并从 base64 解码,符合 URL 特定的修改,符合 RFC 4648。在发生错误时抛出异常。

语法

参数

  • encodedURL字符串 列或常量。如果字符串不是有效的 base64 编码值并进行 URL 特定的修改,则抛出异常。

返回值

  • 一个包含参数解码值的字符串。

示例

结果:

tryBase64Decode

base64Decode,但在发生错误时返回空字符串。

语法

参数

  • encoded字符串 列或常量。如果字符串不是有效的 base64 编码值,则返回空字符串。

返回值

  • 一个包含参数解码值的字符串。

示例

查询:

结果:

tryBase64URLDecode

base64URLDecode,但在发生错误时返回空字符串。

语法

参数

  • encodedURL字符串 列或常量。如果字符串不是有效的 base64 编码值并进行 URL 特定的修改,则返回空字符串。

返回值

  • 一个包含参数解码值的字符串。

示例

查询:

结果:

endsWith

返回字符串 str 是否以 suffix 结尾。

语法

endsWithUTF8

返回字符串 str 是否以 suffix 结尾,endsWithUTF8endsWith 的区别在于 endsWithUTF8 通过 UTF-8 字符匹配 strsuffix

语法

示例

结果:

startsWith

返回字符串 str 是否以 prefix 开头。

语法

示例

startsWithUTF8

Available in version 23.8 and later

返回字符串 str 是否以 prefix 开头,startsWithUTF8startsWith 的区别在于 startsWithUTF8 通过 UTF-8 字符匹配 strprefix

示例

结果:

trim

移除字符串开头或结尾的指定字符。如果未另行指定,则该函数移除空白字符(ASCII 字符 32)。

语法

参数

  • trim_character — 要修剪的字符。 字符串
  • input_string — 要修剪的字符串。 字符串

返回值

一个没有前导和/或尾随指定字符的字符串。 字符串

示例

结果:

trimLeft

移除字符串开头连续出现的空白字符(ASCII 字符 32)。

语法

别名:ltrim

参数

  • input_string — 要修剪的字符串。 字符串
  • trim_characters — 要修剪的字符。可选。 字符串。如果未指定,则使用 ' '(单个空格)作为修剪字符。

返回值

没有前导空白的字符串。 字符串

示例

结果:

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 子字符串进行解转义。这些子字符串为: &quot; &amp; &apos; &gt; &lt;

该函数还用 Unicode 字符替换数字字符引用。支持十进制(如 &#10003;)和十六进制(&#x2713;)两种形式。

语法

参数

  • x — 输入字符串。 String.

返回值

  • 解转义后的字符串。 String.

示例

结果:

decodeHTMLComponent

对具有特殊含义的 HTML 子字符串进行解转义。例如: &hbar; &gt; &diamondsuit; &heartsuit; &lt; 等。

该函数还用 Unicode 字符替换数字字符引用。支持十进制(如 &#10003;)和十六进制(&#x2713;)两种形式。

语法

参数

  • x — 输入字符串。 String.

返回值

  • 解转义后的字符串。 String.

示例

结果:

extractTextFromHTML

此函数从 HTML 或 XHTML 中提取纯文本。

它并不完全符合 HTML、XML 或 XHTML 规范,但实现相当准确且快速。规则如下:

  1. 跳过注释。例如: <!-- test -->。注释必须以 --> 结束。不允许嵌套注释。 注意: 像 <!--><!---> 这样的结构在 HTML 中不是有效的注释,但它们会被其他规则跳过。
  2. CDATA 被逐字粘贴。注意: CDATA 是 XML/XHTML 特有的,并在“尽力而为”的基础上进行处理。
  3. scriptstyle 元素以及其所有内容均被移除。注意: 假定闭合标签不能出现在内容中。例如,在 JS 字符串字面值中必须像 "<\/script>" 一样转义。 注意: 在 scriptstyle 中可能存在注释和 CDATA - 在这种情况下,不搜索闭合标签在 CDATA 之内。例如: <script><![CDATA[</script>]]></script>。但它们仍然在注释里面被搜索。有时变得复杂: <script>var x = "<!--"; </script> var y = "-->"; alert(x + y);</script>。 注意: scriptstyle 可以是 XML 名称空间的名称 - 那样它们不会像通常的 scriptstyle 元素那样处理。例如: <script:a>Hello</script:a>。 注意: 闭合标签名称后可能有空白: </script >,但闭合标签前不能有空白: < / script>
  4. 跳过没有内部内容的其他标签或类似标签的元素。例如: <a>.</a>。 注意: 预计此 HTML 是非法的: <a test=">"></a>。 注意: 它还会跳过类似标签的东西: <>, <!> 等。 注意: 没有结尾的标签会跳到输入的末尾: <hello
  5. HTML 和 XML 实体不会被解码。它们必须由单独的函数处理。
  6. 文本中的空白被折叠或按特定规则插入。
    • 移除开头和结尾的空白。
    • 连续的空白被折叠。
    • 但是如果文本被其他元素分隔且没有空白,则会插入空白。
    • 这可能导致不自然的示例:Hello<b>world</b>Hello<!-- -->world - 在 HTML 中没有空白,但该函数插入了它。还要考虑: Hello<p>world</p>Hello<br>world。这种行为对于数据分析是合理的,例如将 HTML 转换为词袋。
  7. 另请注意,正确处理空白需要支持 <pre></pre> 和 CSS displaywhite-space 属性。

语法

参数

  • x — 输入文本。 String.

返回值

示例

第一个示例包含多个标签和一个注释,并且还显示了空白处理。 第二个示例显示了 CDATA 和 script 标签处理。 在第三个示例中,从通过 url 函数接收到的完整 HTML 响应中提取文本。

结果:

ascii

返回字符串 s 的第一个字符的 ASCII 代码点(作为 Int32)。

如果 s 为空,结果为 0。如果第一个字符不是 ASCII 字符或不属于 UTF-16 的 Latin-1 补充范围,则结果未定义。

语法

soundex

返回字符串的 Soundex 码

语法

参数

返回值

  • 输入值的 Soundex 码。 String

示例

结果:

punycodeEncode

返回字符串的 Punycode 表示。 该字符串必须为 UTF8 编码,否则行为未定义。

语法

参数

返回值

  • 输入值的 Punycode 表示。 String

示例

结果:

punycodeDecode

返回一个 Punycode 编码字符串的 UTF8 编码明文。 如果未给出有效的 Punycode 编码字符串,则引发异常。

语法

参数

  • val — Punycode 编码字符串。 String

返回值

  • 输入值的明文。 String

示例

结果:

tryPunycodeDecode

punycodeDecode 但如果未给出有效的 Punycode 编码字符串则返回空字符串。

idnaEncode

返回根据 国际化域名应用 (IDNA) 机制的域名的 ASCII 表示 (ToASCII 算法)。 输入字符串必须是 UTF 编码的并且可翻译为 ASCII 字符串,否则引发异常。 注意: 不执行百分比解码或修剪制表符、空格或控制字符。

语法

参数

返回值

  • 根据 IDNA 机制的输入值的 ASCII 表示。 String

示例

结果:

tryIdnaEncode

idnaEncode 但在发生错误时返回空字符串而不是引发异常。

idnaDecode

返回根据 国际化域名应用 (IDNA) 机制的域名的 Unicode (UTF-8) 表示 (ToUnicode 算法)。 如果发生错误(例如因为输入无效),则返回输入字符串。 请注意,idnaEncode()idnaDecode() 的重复应用不一定返回原始字符串,因为会进行大小写规范化。

语法

参数

返回值

  • 根据 IDNA 机制的输入值的 Unicode (UTF-8) 表示。 String

示例

结果:

byteHammingDistance

计算两个字节字符串之间的 汉明距离

语法

示例

结果:

别名: mismatches

stringJaccardIndex

计算两个字节字符串之间的 Jaccard 相似度指数

语法

示例

结果:

stringJaccardIndexUTF8

stringJaccardIndex 类似,但适用于 UTF8 编码字符串。

editDistance

计算两个字节字符串之间的 编辑距离

语法

示例

结果:

别名: levenshteinDistance

editDistanceUTF8

计算两个 UTF8 字符串之间的 编辑距离

语法

示例

结果:

别名: levenshteinDistanceUTF8

damerauLevenshteinDistance

计算两个字节字符串之间的 Damerau-Levenshtein 距离

语法

示例

结果:

jaroSimilarity

计算两个字节字符串之间的 Jaro 相似度

语法

示例

结果:

jaroWinklerSimilarity

计算两个字节字符串之间的 Jaro-Winkler 相似度

语法

示例

结果:

initcap

将每个单词的首字母转换为大写,其余字母转换为小写。单词是由非字母数字字符分隔的字母数字字符的序列。

备注

因为 initCap 仅将每个单词的首字母转换为大写,因此您可能会观察到对于包含撇号或大写字母的单词的意外行为。例如:

将返回

这是已知的行为,目前没有计划对此进行修复。

语法

参数

  • val — 输入值。 String.

返回值

  • val 中每个单词的首字母转换为大写。 String.

示例

查询:

结果:

initcapUTF8

initcap 类似,initcapUTF8 将每个单词的首字母转换为大写,其余字母转换为小写。假设字符串包含有效的 UTF-8 编码的文本。 如果这个假设被违反,则不抛出异常,结果未定义。

备注

此函数不检测语言,例如对于土耳其语,结果可能不完全正确(i/İ 与 i/I)。 如果 UTF-8 字节序列的长度对于一个代码点的大小写不同,则该代码点的结果可能不正确。

语法

参数

  • val — 输入值。 String.

返回值

  • val 中每个单词的首字母转换为大写。 String.

示例

查询:

结果:

firstLine

返回多行字符串中的第一行。

语法

参数

返回值

  • 输入值的第一行或如果没有行分隔符则返回整个值。 String

示例

结果:

stringCompare

在字典顺序中比较两个字符串。

语法

参数

  • string1 — 要比较的第一个字符串。 String
  • string2 - 要比较的第二个字符串。String
  • string1_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)-grams 的哈希值严格大于子字符串内部的任何 (n-1)-gram 的哈希值。 使用 crc32 作为哈希函数。

语法

参数

  • s — 输入字符串。 String
  • min_ngram_length — 提取的 ngram 的最小长度。默认值和最小值为 3。
  • max_ngram_length — 提取的 ngram 的最大长度。默认值为 100。应不小于 'min_ngram_length'。

返回值

示例

结果:

sparseGramsUTF8

查找给定字符串中所有长度至少为 n 的子字符串, 其中子字符串的边界的 (n-1)-grams 的哈希值严格大于子字符串内部的任何 (n-1)-gram 的哈希值。 使用 crc32 作为哈希函数。 期望 UTF-8 字符串,如果无效的 UTF-8 序列则抛出异常。

语法

参数

  • s — 输入字符串。 String
  • min_ngram_length — 提取的 ngram 的最小长度。默认值和最小值为 3。
  • max_ngram_length — 提取的 ngram 的最大长度。默认值为 100。应不小于 'min_ngram_length'。

返回值

示例

结果:

sparseGramsHashes

查找给定字符串中所有长度至少为 n 的子字符串的哈希值, 其中子字符串的边界的 (n-1)-grams 的哈希值严格大于子字符串内部的任何 (n-1)-gram 的哈希值。 使用 crc32 作为哈希函数。

语法

参数

  • s — 输入字符串。 String
  • min_ngram_length — 提取的 ngram 的最小长度。默认值和最小值为 3。
  • max_ngram_length — 提取的 ngram 的最大长度。默认值为 100。应不小于 'min_ngram_length'。

返回值

  • 选定子字符串 crc32-c 哈希的数组。 Array(UInt32).

示例

结果:

sparseGramsHashesUTF8

查找给定字符串中所有长度至少为 n 的子字符串的哈希值, 其中子字符串的边界的 (n-1)-grams 的哈希值严格大于子字符串内部的任何 (n-1)-gram 的哈希值。 使用 crc32 作为哈希函数。 期望 UTF-8 字符串,如果无效的 UTF-8 序列则抛出异常。

语法

参数

  • s — 输入字符串。 String
  • min_ngram_length — 提取的 ngram 的最小长度。默认值和最小值为 3。
  • max_ngram_length — 提取的 ngram 的最大长度。默认值为 100。应不小于 'min_ngram_length'。

返回值

  • 选定子字符串 crc32-c 哈希的数组。 Array(UInt32).

示例

结果:

stringBytesUniq

计算字符串中不同字节的数量。

语法

参数

  • s — 要分析的字符串。 String.

返回值

  • 字符串中不同字节的数量。 UInt16.

示例

结果:

stringBytesEntropy

计算字符串中字节分布的香农熵。

语法

参数

  • s — 要分析的字符串。 String.

返回值

  • 字符串中字节分布的香农熵。 Float64.

示例

结果: