如何将一个包含的列的值拆分为两个包含多个单词的列



我想将下面的值使用到表内的不同列中,现在它们存储到一个我尝试过REGEXP_SUBSTR,但仍然不能单独使用它们。任何帮助都是无价的

SELECT
REGEXP_SUBSTR('One Thousand Four Hundred Forty Six', '[^ ]+', 1, level) AS parts
FROM dual
CONNECT BY REGEXP_SUBSTR('One Thousand Four Hundred Forty Six', '[^ ]+', 1, level) IS NOT NULL;

the output should be like this : 
column A : One Thousand
column B : Four Hundred
column C : Forty Six

以上是我的尝试

如果您将样式更改为:

'[^ ]+( [^ ]+)?'

,然后它会找到一个可选的单词,后面跟着一个空格和另一个单词——所以如果你以奇数个单词开头,它仍然可以工作。

那么你的查询可以是:

SELECT
REGEXP_SUBSTR('One Thousand Four Hundred Forty Six', '[^ ]+( [^ ]+)?', 1, level) AS parts
FROM dual
CONNECT BY REGEXP_SUBSTR('One Thousand Four Hundred Forty Six', '[^ ]+( [^ ]+)?', 1, level) IS NOT NULL;
部分th>一千四百

你有一个正则表达式[^ ]+,可以找到一个单词(相邻字符,没有空白)。

您想要一个查找两个单词(一个单词,一个空白,一个单词)的正则表达式:[^ ]+ [^ ]+.

SELECT
REGEXP_SUBSTR(str, '[^ ]+ [^ ]+', 1, level) AS parts
FROM (select 'One Thousand Four Hundred Forty Six' as str from dual)
CONNECT BY REGEXP_SUBSTR(str, '[^ ]+ [^ ]+', 1, level) IS NOT NULL;

相关内容

  • 没有找到相关文章

最新更新