Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 正在查找将一列的值拆分为另一列的脚本_Sql_Oracle - Fatal编程技术网

Sql 正在查找将一列的值拆分为另一列的脚本

Sql 正在查找将一列的值拆分为另一列的脚本,sql,oracle,Sql,Oracle,我正在寻找一个将一列的值拆分为另一列的查询,下面是当前列的示例,其中包含该值以及预期的新列 现有列: 应使用新列: 正如您在第四行中所看到的,我的值类似于hkp02lp1802s,在新的列中,我不希望在末尾出现“s”,它类似于HKP02LP1802REGEXP\u REPLACE应该适合您的需要: 如果需要更复杂的内容,请尝试此查询并调整正则表达式: select DBName, regexp_replace(lower(Asset), '

我正在寻找一个将一列的值拆分为另一列的查询,下面是当前列的示例,其中包含该值以及预期的新列

现有列: 应使用新列:
正如您在第四行中所看到的,我的值类似于
hkp02lp1802s
,在新的列中,我不希望在末尾出现“s”,它类似于
HKP02LP1802

REGEXP\u REPLACE应该适合您的需要:

如果需要更复杂的内容,请尝试此查询并调整正则表达式:

select  
        DBName,         
        regexp_replace(lower(Asset), '(' || lower(DBName) || ')[^.]', DBName) 
        from asset

这个问题是关于正则表达式的吗?您想在第一个
之前用
-
分隔最后一个单词吗?您的所有规则是什么?除非您能提供一些关于如何从资产数据中提取数据库名的规则,否则没有直接的答案。目前,规则看起来有点随意:使用资产值中以
结尾的第一个连续字符串,前提是它不包含破折号,在这种情况下,请删除破折号之前的字符。或者破折号后面的字符。如果破折号前有一个
s
,则也将其删除。。。
Asset                                                              DBName
ora-abacogp.de.hsbc, 1626, ABACOGP                                 ABACOGP
frlooraprda1.systems.uk.hsbc, 60002, ABM00                         FRLOORAPRDA1
fr00parp0845ora.hibm.sub.fr.hsbc, 1521, ACC                        FR00PARP0845ORA
hkp02lp1802s-rs6000.hk.hsbc, 50000, ACMHKPU1:ACRMUTF               HKP02LP1802
actcoreprod.us.hsbc, 1700, ACTCOREP                                ACTCOREPROD
frloo10g1prd.systems.uk.hsbc, 1521, ADN00                          FRLOO10G1PRD
ae0w0dic5073.hbeu.adroot.hsbc, 56091, AE0W0DIC5073\LIVE801MSSQL    AE0W0DIC5073
MTW00130511.HBEU.ADROOT.HSBC, 1521, ARISTION                       MTW00130511
IGASMALTA.HBEU.ADROOT.HSBC, 1521, IGASDBL                          IGASMALTA
ssuml527.systems.uk.hsbc, 1521, LMSPEGA1                           SSUML527
select  
        DBName,         
        regexp_replace(lower(Asset), '(' || lower(DBName) || ')[^.]', DBName) 
        from asset