REGEXP_SPLIT_TO_ARRAY
使用正则表达式模式切分字符串,并将各个片段作为数组返回。
语法
REGEXP_SPLIT_TO_ARRAY(string, pattern [, flags text])
支持的 flags 参数:
通过组合以下字符,提供灵活的正则表达式配置选项,以控制匹配行为:
i(大小写不敏感):模式匹配时忽略大小写。c(大小写敏感):模式匹配区分大小写(默认行为)。n或m(多行):启用多行模式。在此模式下,^和$分别匹配字符串的开头和结尾,也匹配每一行的开头和结尾;点号.不匹配换行符。s(单行):启用单行模式(也称为 dot-matches-newline)。在此模式下,点号.匹配任意字符,包括换行符。x(忽略空白):忽略模式中的空白字符(提高模式可读性)。q(字面量):将pattern视为字面字符串,而不是正则表达式。
示例
基本切分
SELECT REGEXP_SPLIT_TO_ARRAY('apple,orange,banana', ',');
┌───────────────────────────────────────────┐
│ ["apple","orange","banana"] │
└───────────────────────────────────────────┘
复杂分隔符
SELECT REGEXP_SPLIT_TO_ARRAY('2023-01-01T14:30:00', '[-T:]');
┌───────────────────────────────────────────────────────┐
│ ["2023","01","01","14","30","00"] │
└───────────────────────────────────────────────────────┘
处理空元素
SELECT REGEXP_SPLIT_TO_ARRAY('a,,b,,,c', ',+');
┌───────────────────────────────────┐
│ ["a","b","c"] │
└───────────────────────────────────┘
使用 flag text
SELECT regexp_split_to_array('One_Two_Three', '[_-]', 'i')
╭─────────────────────────────────────────────────────╮
│ ['One','Two','Three'] │
╰─────────────────────────────────────────────────────╯
另请参阅
- SPLIT:用于简单的字符串切分
- REGEXP_SPLIT_TO_TABLE:将字符串切分为表