如何将单列多词值拆分为多列?Oracle REGEXP_SUBSTR使用求助
解决方案
针对将形如“One Thousand Four Hundred Forty Six”的字符串按每两个单词一组拆分到三列的需求,可通过调整正则匹配规则实现,具体SQL代码如下:
WITH sample_data AS ( SELECT 'One Thousand Four Hundred Forty Six' AS num_text FROM dual ) SELECT REGEXP_SUBSTR(num_text, '(\w+ \w+)', 1, 1) AS column_a, REGEXP_SUBSTR(num_text, '(\w+ \w+)', 1, 2) AS column_b, REGEXP_SUBSTR(num_text, '(\w+ \w+)', 1, 3) AS column_c FROM sample_data;
代码说明
- 正则表达式
(\w+ \w+)用于匹配两个连续的单词:\w+匹配任意字母数字序列(单个单词),中间的空格分隔两个单词,整体实现每两个单词为一组的匹配逻辑。 REGEXP_SUBSTR函数的第4个参数指定匹配的出现次数:传入1取第一组(One Thousand),2取第二组(Four Hundred),3取第三组(Forty Six)。- 你之前的代码使用
[^ ]+作为匹配规则,只能拆分出单个单词,因此无法满足按两个单词一组拆分的需求。
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

