需要查询将列值拆分为三个不同的列

时间:2017-11-08 12:26:58

标签: sql oracle

我在查询中需要帮助,将列值拆分为三个不同的列。

这是我在数据库中的列。

Asset
----------------------------------------------
AP4INPU1:INPRD1HF@hkp04lp0605s-rs6000.hk.hsbc

我想将其分割如下

Asset                             InstanceName      ServerName
---------------------------------------------------------------
AP4INPU1:INPRD1HF@hkp04lp0605s-   AP4INPU1          hkp04lp0605
rs6000.hk.hsbc

最初服务器名称以's'结尾,但我不希望在新ServerName列的末尾显示's'。

此致

Bharath Vikas

2 个答案:

答案 0 :(得分:0)

假设服务器名称没有在两个" s中结束(看起来前面的字符是一个数字),你可以这样做:

select regexp_substr(asset, '[^:]+', 1, 1) as instancename,
       trim(trailing 's' from trim(':' from regexp_substr(asset, ':[^-]+', 1, 1))) as servername
from (select 'AP4INPU1:INPRD1HF@hkp04lp0605s-rs6000.hk.hsbc' as asset from dual) x

答案 1 :(得分:0)

试试这个。

 MultipleClass multipleClass = new MultipleClass();
 multipleClass.Method1(); //OUTPUT: Class1: Method1, MyInt: 1 
 multipleClass.Method2(); //OUTPUT: Class2: Method2, MyInt: 1
 multipleClass.MyInt = 1;