我想将下面的值使用到表内的不同列中,现在它们存储到一个我尝试过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;