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

字符串操作函数

有关在字符串中 搜索替换 的函数单独进行了描述。

empty

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

此函数也适用于 数组UUID

语法

参数

返回值

  • 为空字符串时返回 1,非空字符串时返回 0UInt8

示例

结果:

notEmpty

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

此函数也适用于 数组UUID

语法

参数

返回值

  • 非空字符串时返回 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

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

语法

参数

返回值

  • 对于正的 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

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

语法

参数

返回值

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

查询:

结果:

toValidUTF8

将无效的UTF-8字符替换为 (U+FFFD) 字符。所有连在一起的无效字符都会合并成一个替代字符。

语法

参数

  • input_string — 任何字节集合,表示为 字符串 数据类型对象。

返回值

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

示例

repeat

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

语法

别名: REPEAT

参数

返回值

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

示例

结果:

space

连接一个空格( ),按指定次数与自身连接。

语法

别名: SPACE.

参数

返回值

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

示例

查询:

结果:

reverse

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

reverseUTF8

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

concat

连接给定的参数。

语法

参数

任意类型的值。

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

返回值

由连接参数创建的字符串。

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

示例

查询:

结果:

查询:

结果:

备注
|| 运算符

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

concatAssumeInjective

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

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

语法

参数

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

返回值

由连接参数创建的字符串。

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

示例

输入表:

结果:

concatWithSeparator

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

语法

别名: concat_ws

参数

  • sep — 分隔符。 常量 字符串固定字符串
  • exprN — 要连接的表达式。非 字符串固定字符串 类型的参数会使用其默认序列化转换为字符串。由于这会降低性能,因此不建议使用非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 的子字符串,长度为 length,从索引 offset 开始。 字符串

示例

结果:

substringUTF8

返回字符串 s 的子字符串,该子字符串始于指定的字节索引 offset 以处理Unicode代码点。字节计数从1开始。如果 offset 为0,则返回空字符串。如果 offset 为负,则子字符串从字符串末尾的 pos 个字符开始,而不是从开头开始。可选参数 length 指定返回的子字符串的最大字节数。

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

语法

参数

返回值

包含 s 的子字符串,长度为 length,从索引 offset 开始。

实现细节

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

示例

substringIndex

返回字符串 scount 次出现分隔符 delim 之前的子字符串,如同在Spark或MySQL中一样。

语法

别名: SUBSTRING_INDEX

参数

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

示例

结果:

substringIndexUTF8

返回字符串 scount 次出现分隔符 delim 之前的子字符串,专门针对Unicode代码点。

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

语法

参数

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

返回值

count 次出现 delim 之前的子字符串 字符串s

实现细节

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

示例

appendTrailingCharIfAbsent

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

语法

convertCharset

返回将字符串 s 从编码 from 转换为编码 to 的结果。

语法

base58Encode

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

语法

参数

返回值

示例

结果:

base58Decode

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

语法

参数

返回值

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

示例

结果:

tryBase58Decode

base58Decode 但在出错时返回空字符串。

语法

参数

  • encoded: 字符串固定字符串。如果该字符串不是有效的 Base58 编码值,在出错时返回空字符串。

返回值

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

示例

查询:

base64Encode

根据 RFC 4648 将字符串或固定字符串编码为Base64。

别名: TO_BASE64.

语法

参数

返回值

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

示例

结果:

base64URLEncode

将URL(String或FixedString)编码为base64,并进行URL特定的修改,遵循RFC 4648

语法

参数

  • urlString 列或常量。

返回值

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

示例

结果:

base64Decode

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

别名:FROM_BASE64

语法

参数

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

返回值

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

示例

结果:

base64URLDecode

接受一个base64编码的URL,并根据RFC 4648对其进行解码,进行URL特定的修改。在发生错误时抛出异常。

语法

参数

  • encodedURLString 列或常量。如果字符串不是有效的Base64编码值,并且带有URL特定的修改,则会抛出异常。

返回值

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

示例

结果:

tryBase64Decode

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

语法

参数

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

返回值

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

示例

查询:

tryBase64URLDecode

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

语法

参数

  • encodedURLString 列或常量。如果字符串不是有效的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字符来匹配 strsuffix

示例

结果:

trim

删除字符串开头或结尾处的指定字符。如果没有特别说明,函数将删除空格(ASCII字符32)。

语法

参数

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

返回值

无前导和/或尾部指定字符的字符串。 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中具有特殊含义的子字符串。这些子字符串是:&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

返回值

  • 提取的文本。 String

示例

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

结果:

ascii

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

如果s为空,则结果为0。如果第一个字符不是ASCII字符或不属于UTF-16的拉丁-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

计算两个字节字符串之间的杰卡德相似性指数

语法

示例

结果:

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)。

示例

结果:

结果: