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