字符串函数
本页按功能对 TiDB Cloud Lake 中的字符串函数进行了全面概览,便于快速查阅。
字符串拼接与操作
| Function | 描述 | 示例 |
|---|
| CONCAT | 拼接字符串 | CONCAT('data', 'lake') → 'datalake' |
| CONCAT_WS | 使用分隔符拼接字符串 | CONCAT_WS('-', 'data', 'lake') → 'data-lake' |
| INSERT | 在指定位置插入字符串 | INSERT('datalake', 5, 0, 'cloud') → 'datacloudlake' |
| REPLACE | 替换子字符串的出现位置 | REPLACE('datalake', 'lake', 'cloud') → 'datacloud' |
| TRANSLATE | 将字符替换为对应的替换字符 | TRANSLATE('datalake', 'de', 'DE') → 'DatalakE' |
| Function | 描述 | 示例 |
|---|
| LEFT | 返回最左侧的字符 | LEFT('datalake', 4) → 'data' |
| RIGHT | 返回最右侧的字符 | RIGHT('datalake', 4) → 'lake' |
| SUBSTR / SUBSTRING | 提取子字符串 | SUBSTR('datalake', 5, 4) → 'lake' |
| MID | 提取子字符串(SUBSTRING 的别名) | MID('datalake', 5, 4) → 'lake' |
| SPLIT | 将字符串切分为数组 | SPLIT('data,lake', ',') → ['data', 'lake'] |
| SPLIT_PART | 切分后返回指定部分 | SPLIT_PART('data,lake', ',', 2) → 'lake' |
| REGEXP_SPLIT_TO_ARRAY | 使用指定模式将字符串切分为片段数组 | regexp_split_to_array('apple,banana,orange', ','); → '['apple','banana','orange']' |
| REGEXP_SPLIT_TO_TABLE | 使用指定模式将字符串切分为片段表 | regexp_split_to_table('data,lake', ',', 2) |
| Function | 描述 | 示例 |
|---|
| LPAD | 在左侧填充字符串至指定长度 | LPAD('lake', 8, 'data') → 'datalake' |
| RPAD | 在右侧填充字符串至指定长度 | RPAD('data', 8, 'lake') → 'datalake' |
| REPEAT | 将字符串重复 n 次 | REPEAT('data', 2) → 'datadata' |
| SPACE | 返回由空格组成的字符串 | SPACE(4) → ' ' |
| REVERSE | 反转字符串 | REVERSE('datalake') → 'ekalatad' |
字符串裁剪
| Function | 描述 | 示例 |
|---|
| TRIM | 移除首尾空格 | TRIM(' datalake ') → 'datalake' |
| TRIM_BOTH | 移除两端指定字符 | TRIM_BOTH('xxdatalakexx', 'x') → 'datalake' |
| TRIM_LEADING | 移除开头的指定字符 | TRIM_LEADING('xxdatalake', 'x') → 'datalake' |
| TRIM_TRAILING | 移除末尾的指定字符 | TRIM_TRAILING('datalakexx', 'x') → 'datalake' |
| LTRIM | 移除前导空格 | LTRIM(' datalake') → 'datalake' |
| RTRIM | 移除尾随空格 | RTRIM('datalake ') → 'datalake' |
| Function | 描述 | 示例 |
|---|
| LENGTH | 返回字符串的字符长度 | LENGTH('datalake') → 8 |
| CHAR_LENGTH / CHARACTER_LENGTH | 返回字符串的字符长度 | CHAR_LENGTH('datalake') → 8 |
| BIT_LENGTH | 返回字符串的位长度 | BIT_LENGTH('datalake') → 64 |
| OCTET_LENGTH | 返回字符串的字节长度 | OCTET_LENGTH('datalake') → 8 |
| INSTR | 返回首次出现的位置 | INSTR('datalake', 'lake') → 5 |
| LOCATE | 返回首次出现的位置 | LOCATE('lake', 'datalake') → 5 |
| POSITION | 返回首次出现的位置 | POSITION('lake' IN 'datalake') → 5 |
| STRCMP | 比较两个字符串 | STRCMP('datalake', 'datalake') → 0 |
| JARO_WINKLER | 返回字符串之间的相似度 | JARO_WINKLER('datalake', 'datalake') → 1.0 |
大小写转换
| Function | 描述 | 示例 |
|---|
| LOWER / LCASE | 转换为小写 | LOWER('DataLake') → 'datalake' |
| UPPER / UCASE | 转换为大写 | UPPER('datalake') → 'DATALAKE' |
模式匹配
| Function | 描述 | 示例 |
|---|
| LIKE | 使用通配符进行模式匹配 | 'datalake' LIKE 'data%' → true |
| NOT_LIKE | LIKE 的否定形式 | 'datalake' NOT LIKE 'cloud%' → true |
| REGEXP / RLIKE | 使用正则表达式进行模式匹配 | 'datalake' REGEXP '^data' → true |
| NOT_REGEXP / NOT_RLIKE | 正则匹配的否定形式 | 'datalake' NOT REGEXP '^cloud' → true |
| REGEXP_LIKE | 返回正则匹配的布尔值 | REGEXP_LIKE('datalake', '^data') → true |
| REGEXP_INSTR | 返回正则匹配的位置 | REGEXP_INSTR('datalake', 'lake') → 5 |
| REGEXP_SUBSTR | 返回匹配正则的子字符串 | REGEXP_SUBSTR('datalake', 'lake') → 'lake' |
| REGEXP_REPLACE | 替换正则匹配的内容 | REGEXP_REPLACE('datalake', 'lake', 'cloud') → 'datacloud' |
| GLOB | Unix 风格的模式匹配 | 'datalake' GLOB 'data*' → true |
编码与解码
| Function | 描述 | 示例 |
|---|
| ASCII | 返回第一个字符的 ASCII 值 | ASCII('D') → 68 |
| ORD | 返回第一个字符的 Unicode 码点 | ORD('D') → 68 |
| CHAR / CHR | 根据给定的 Unicode 码点返回字符组成的字符串 | CHAR(68,97,116,97) → 'Data' |
| BIN | 返回二进制表示 | BIN(5) → '101' |
| OCT | 返回八进制表示 | OCT(8) → '10' |
| HEX | 返回十六进制表示 | HEX('ABC') → '414243' |
| UNHEX | 将十六进制转换为二进制 | UNHEX('414243') → 'ABC' |
| TO_BASE64 | 编码为 base64 | TO_BASE64('datalake') → 'ZGF0YWxha2U=' |
| FROM_BASE64 | 从 base64 解码 | FROM_BASE64('ZGF0YWxha2U=') → 'datalake' |
其他
| Function | 描述 | 示例 |
|---|
| QUOTE | 为 SQL 转义字符串 | QUOTE('datalake') → '"datalake"' |
| SOUNDEX | 返回 soundex 编码 | SOUNDEX('datalake') → 'D42' |
| SOUNDSLIKE | 比较 soundex 值 | SOUNDSLIKE('datalake', 'datalake') → true |