我有这个字符串:
145|567
我想在" |"之后提取部分。 这个想法不是使用位置,因为字符串可能有不同的长度。
Expected result:
567
非常感谢
答案 0 :(得分:1)
使用instr()获取|的位置和substr()。例如:
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse) {
console.log("MY LINK: " + response.link);
});
答案 1 :(得分:1)
我想到了两种做法。第一个是正则表达式
select regexp_substr('123|456', '|([\d]+)\1') from dual
这样您就可以捕获|
另一个是子字符串
select substr('123|456', instr('123|456', '|') + 1) from dual
这样,您可以从|
答案 2 :(得分:0)
如果你想先在一个Query中解决,你需要知道你需要使用哪个位置就像分隔符一样,你可以使用INSTR函数:
SELECT INSTR('145|567', '|') FROM dual;
-- Return 4
使用此功能,您可以获得您使用的字符串上的位置,如分隔符。
然后,您可以使用SUBSTR嵌套此函数,该函数用于提取字符串的一部分:
SELECT SUBSTR('145|567', INSTR('145|567', '|') + 1) FROM dual;
-- Return 567
您需要添加一个位置,因为INSTR返回分隔符的确切位置,如果您不想返回SUBSTR操作,则转到字符串的下一个位置。
答案 3 :(得分:0)
只要您的解决方案处理不同的长度元素,按位置解析没有任何问题。此regexp_substr获取列表的第二个元素,其中元素后跟管道或行尾。它不关心元素的长度,并处理多个元素甚至NULL元素。
select regexp_substr('123|456', '(.*?)(\||$)', 1, 2, NULL, 1) from dual