从 ODI 表达式中的字符串中提取第二个单词
Extract the second word from a string in ODI Expression
这两种语法允许从 oracle 中的字符串中获取第二个单词
SELECT REGEXP_SUBSTR('Hello this is an example', '\s+(\w+)\s') AS syntax1,
SUBSTR('Hello this is an example',
INSTR('Hello this is an example', ' ', 1, 1) + 1,
INSTR('Hello this is an example', ' ', 1, 2)
- INSTR('Hello this is an example', ' ', 1)
) AS syntax2
FROM dual;
结果:
syntax1 syntax2
------- -------
this this
我在 ODI(oracle 数据集成)工作,这两种语法在 ODI 中不起作用:
对于 ODI,正则表达式无效且 INSTR 函数仅接受 2 个参数
你能建议我一个可以在 ODI 中工作的解决方案吗?
谢谢。
然后,你可以应用SUBSTR()
函数两次:
WITH t2(str) AS
(
SELECT SUBSTR( TRIM( str ), INSTR( TRIM( str ), ' ') + 1, LENGTH( TRIM(str) ) )
FROM t --> original table
)
SELECT SUBSTR( str, 1, INSTR(str, ' ') - 1 ) AS extracted_string
FROM t2
extracted_string
----------------
this
如果安装的 ODI 的版本是 12+,那么您也可以使用 REGEXP_REPLACE()
,如下所示:
SELECT REGEXP_REPLACE(str, '(\w+)\s(\w+)( .*)', '' ) AS extracted_string
FROM t
我觉得应该支持' [[:alpha:]]+ '
我终于用到了这个表达方式:
SELECT
SUBSTR (
SUBSTR ('one two three four',
INSTR ('one two three four', ' ') + 1,
999999),
0,
INSTR (
SUBSTR ('one two three four',
INSTR ('one two three four', ' ') + 1,
999999),
' ')
- 1)
FROM DUAL
这两种语法允许从 oracle 中的字符串中获取第二个单词
SELECT REGEXP_SUBSTR('Hello this is an example', '\s+(\w+)\s') AS syntax1,
SUBSTR('Hello this is an example',
INSTR('Hello this is an example', ' ', 1, 1) + 1,
INSTR('Hello this is an example', ' ', 1, 2)
- INSTR('Hello this is an example', ' ', 1)
) AS syntax2
FROM dual;
结果:
syntax1 syntax2
------- -------
this this
我在 ODI(oracle 数据集成)工作,这两种语法在 ODI 中不起作用: 对于 ODI,正则表达式无效且 INSTR 函数仅接受 2 个参数
你能建议我一个可以在 ODI 中工作的解决方案吗?
谢谢。
然后,你可以应用SUBSTR()
函数两次:
WITH t2(str) AS
(
SELECT SUBSTR( TRIM( str ), INSTR( TRIM( str ), ' ') + 1, LENGTH( TRIM(str) ) )
FROM t --> original table
)
SELECT SUBSTR( str, 1, INSTR(str, ' ') - 1 ) AS extracted_string
FROM t2
extracted_string
----------------
this
如果安装的 ODI 的版本是 12+,那么您也可以使用 REGEXP_REPLACE()
,如下所示:
SELECT REGEXP_REPLACE(str, '(\w+)\s(\w+)( .*)', '' ) AS extracted_string
FROM t
我觉得应该支持' [[:alpha:]]+ '
我终于用到了这个表达方式:
SELECT
SUBSTR (
SUBSTR ('one two three four',
INSTR ('one two three four', ' ') + 1,
999999),
0,
INSTR (
SUBSTR ('one two three four',
INSTR ('one two three four', ' ') + 1,
999999),
' ')
- 1)
FROM DUAL