4

如果模式看起来像这样,如何在 PL/SQL 中拆分字符串以获得最后一个值?:

'1;2',在这种情况下,我想要的值是 2。

注意:分隔符是字符';' 并且值的长度不同,例如 '1;2 or 123;45678 etc...'

提前致谢!

4

4 回答 4

12
SELECT SUBSTR( column_name, 
               INSTR( column_name, ';', -1 ) + 1 )
  FROM table_name

应该管用。这是一个SQL Fiddle 示例

于 2013-07-18T16:50:24.527 回答
8
regexp_substr(your_string, '[^;]*$')
于 2013-07-18T18:22:26.193 回答
4

你应该先找到 ; 使用,

instr(string,';',1,1)

然后使用SUBSTR函数从比前一个函数中找到的值多一开始提取值。

select substr(string,instr(string,';',1,1) + 1) from table;
于 2013-07-18T16:49:00.503 回答
0

在您的情况下,您可以将 instr 与 -1 起始位置和 Substr 一起使用。

pos := instr( searchIn, ';', -1, 1)
res := substr(searchIn, pos + 1)

这应该工作,如果没有......这必须这样做

于 2013-07-18T16:58:47.790 回答