在第二个逗号Oracle / PL SQL之后删除字符串

问题描述

我的值是'45465,6464,654',我想删除其后的第二个逗号和字符串。所以基本上我想要``45465,6464''。我找到了一个解决方案,但它适用于Mssql。我该如何查询Oracle,即使使用子字符串也无法做到。你能帮我吗?

用于MSsql

`声明@S varchar(20)='45465 @ 6464 @ 654';

选择左(@S,charindex('@',@S,charindex('@',@S)+1)-1);`

解决方法

您可以使用非常相似的内容:

WITH s AS (SELECT '45465@6464@654' s FROM dual)
SELECT SUBSTR(s,1,INSTR(s,'@',2)-1) FROM s

或者您可以使用正则表达式:

SELECT regexp_substr('45465@6464@654','([^@]*@)?[^@]*') from dual