【发布时间】:2013-07-18 16:40:38
【问题描述】:
如果模式看起来像这样,如何在 PL/SQL 中拆分字符串以获得最后一个值? :
'1;2',在这种情况下,我想要的值是 2。
注意:分隔符是字符';'并且值的长度不同,例如 '1;2 or 123;45678 etc...'
提前致谢!
【问题讨论】:
-
您需要在存储过程中还是在普通 SQL 中? (PL/SQL 仅用于存储过程)
如果模式看起来像这样,如何在 PL/SQL 中拆分字符串以获得最后一个值? :
'1;2',在这种情况下,我想要的值是 2。
注意:分隔符是字符';'并且值的长度不同,例如 '1;2 or 123;45678 etc...'
提前致谢!
【问题讨论】:
SELECT SUBSTR( column_name,
INSTR( column_name, ';', -1 ) + 1 )
FROM table_name
应该可以。这是SQL Fiddle example。
【讨论】:
regexp_substr(your_string, '[^;]*$')
【讨论】:
你应该先找到 ; 的位置使用,
instr(string,';',1,1)
然后使用SUBSTR函数从比上一个函数中找到的值大一开始提取值。
select substr(string,instr(string,';',1,1) + 1) from table;
【讨论】:
在您的情况下,您可以使用带有 -1 起始位置和 Substr 的 instr。
pos := instr( searchIn, ';', -1, 1)
res := substr(searchIn, pos + 1)
这应该可以,如果不行……那就必须这样做
【讨论】: