在 oracle 中剥离字符串

Posted

技术标签:

【中文标题】在 oracle 中剥离字符串【英文标题】:stripping the strings in oracle 【发布时间】:2017-05-05 14:32:57 【问题描述】:

我有以下组合作为输入,请帮助我返回输出变量的函数,如下所述

COMPANY-ID_ABC_123          ==> This should give three outputs  (COMPANY-ID,ABC,123)
COMPANY-ID                  ==> this should give give three outputs such as (COMPANY-ID,null,null)
COMPANY-ID-FLAG             ==> this should give give three outputs such as (COMPANY-ID,FLAG,null)
COMPANY-ID-FLAG-ES      ==> this should give give three outputs such as (COMPANY-ID,FLAG,ES)
COMPANY-ID-ES               ==> this should give give three outputs such as (COMPANY-ID,ES,null)
IOB-2003                ==> if i give any other string other than the above , it has to just display (IOB-2003,null,null)

【问题讨论】:

你能检查一下你写的是否正确吗? (我发现两三个奇怪的东西......例如,COMPANY-ID-FLAG 或 COMPANY-ID_FLAG?但描述中也有其他) 是的,COMPANY-ID 是默认值,第一个 eg 包含附加的两个其他字符串,并带有下划线 _。其余所有连字符。 如果是这样,请修改并编辑您的问题。澄清您是否也是实际值(例如,当您写 COMPANY-ID 时,您的意思是任何值还是只是“COMPANY_ID”?) 这些是我从 java 文件中收到的输入,比如 COMPANY-ID,它只是一个字符串 Is there a function to split a string in PL/SQL?的可能重复 【参考方案1】:

假设这些是唯一要考虑的 in 值,您可以使用多个 if-elsif-end 语句对其进行硬编码。否则,您必须解析输入字符串。如果我必须解析它,我会首先从 COMPANY-ID 中删除连字符,然后解析“-”和/或“_”上的字符串。

CREATE OR REPLACE PROCEDURE getVal
    ( string_in    IN varchar2,
      string_out1 OUT varchar2,
      string_out2 OUT varchar2,
      string_out3 OUT varchar2 )
AS
   string_out1 := 'IOB-2003';
   string_out2 := 'null';
   string_out3 := 'null';

BEGIN

    IF string_in = 'COMPANY-ID_ABC_123' THEN
        string_out1 := 'COMPANY-ID';
        string_out2 := 'ABC';
        string_out3 := '123';

    ELSIF string_in = 'COMPANY-ID' THEN
        string_out1 := 'COMPANY-ID';

    ELSIF string_in = 'COMPANY-ID-FLAG' THEN
        string_out1 := 'COMPANY-ID';
        string_out2 := 'FLAG';

    ELSIF string_in = 'COMPANY-ID-FLAG-ES' THEN
        string_out1 := 'COMPANY-ID';
        string_out2 := 'FLAG';
        string_out3 := 'ES';

    ELSIF string_in = 'COMPANY-ID-ES' THEN
        string_out1 := 'COMPANY-ID';
        string_out2 := 'ES';

    END IF;

END;

【讨论】:

以上是关于在 oracle 中剥离字符串的主要内容,如果未能解决你的问题,请参考以下文章

before_save,剥离一个字符串

innerHTML 剥离动态添加的字符

ActionScript 3 AS3从字符串中剥离空格

JavaScript 从Javascript中的字符串中剥离html标记

从字符串中剥离 IPv6 和端口号

如何从Javascript中任何图像类型的base64字符串中剥离数据:图像部分