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

Posted

技术标签:

【中文标题】在第二个逗号 Oracle / PL SQL 后删除字符串【英文标题】:Remove string after second comma Oracle / PL SQL 【发布时间】:2020-09-30 12:35:47 【问题描述】:

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

这适用于 MSSQL;

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

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

【问题讨论】:

【参考方案1】:

你可以使用非常相似的东西:

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

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

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

【讨论】:

非常感谢 Radagas81 :) 它有帮助。

以上是关于在第二个逗号 Oracle / PL SQL 后删除字符串的主要内容,如果未能解决你的问题,请参考以下文章

请问如何在Oracle中截取第一个逗号和第二个逗号之间的字符串

去掉 PL/SQL 函数末尾的逗号 [Oracle PL/SQL]

正则表达式在第二个逗号处拆分

PL/SQL - 调用包过程的新实例

PL/SQL Oracle 包错误

Oracle PL/SQL 程序在源表中拆分逗号分隔的数据并推送到目标表中