我想在pl/sql中获取特定字符后面的单词例如:文本='2-99-7051b'我想看7051b,意思是在第二个“-”到最后一个字符之后。
function try ( text in varchar2 ) is begin v_textout varchar2(100) := ''; --some process return v_textout; end;
nhn9ugyo1#
不需要pl/sql来提取所需的部分。使用两种替代方法 REGEXP_REPLACE() 以及 REGEXP_SUBSTR() 正则表达式函数
REGEXP_REPLACE()
REGEXP_SUBSTR()
WITH t(text) AS ( SELECT '2 - 99 - 7051B' FROM dual ) SELECT REGEXP_REPLACE(text,'(.*- )(\S+)','\2') AS first_method, REGEXP_SUBSTR(text,'[^- ]+$') AS second_method FROM t; FIRST_METHOD SECOND_METHOD ------------ ------------- 7051B 7051B
演示其中,破折号字符后面的空格是根据示例故意保留的,并且加上( + )表示匹配的一个或多个事件。
+
xa9qqrwz2#
我找到了解决办法:
select substr(text , instr(text , '-', 1, 2) + 1, length(text)) from dual;
2条答案
按热度按时间nhn9ugyo1#
不需要pl/sql来提取所需的部分。使用两种替代方法
REGEXP_REPLACE()
以及REGEXP_SUBSTR()
正则表达式函数演示
其中,破折号字符后面的空格是根据示例故意保留的,并且加上(
+
)表示匹配的一个或多个事件。xa9qqrwz2#
我找到了解决办法: