我表格中的数据如下所示:
COL1
row 1 aa aa a.bb bb bb.
row 2 aa a aa aa a a. bb bb bbb bb.
row 3 aa a aaa aa aa a a. bbbbb bb bb bbb bb.
row N aa a aaa aaa a a aa aa a a. bbbbb bb bb bb bb bbb bb.
如何在现有列字符串值的第一个句号/句点之前添加固定字符串值?我需要结果看起来像这样:
COL1
row 1 aa aa a(substring).bb bb bb.
row 2 aa a aa aa a a(substring). bb bb bbb bb.
row 3 aa a aaa aa aa a a(substring). bbbbb bb bb bbb bb.
row N aa a aaa aaa a a aa aa a a(substring). bbbbb bb bb bb bb bbb bb.
答案 0 :(得分:1)
您可以使用显式字符串操作来执行此操作:
select substr(col, 1, n) || string || substr(col, n+1)
作为旁注:此功能在其他数据库中可用:
stuff()
(在SQL Server中)insert()
(MySQL)答案 1 :(得分:0)
您可以使用the regexp_replace()
function的正则表达式:
select regexp_replace('aa a aaa aa aa a a. bbbbb bb bb bbb bb.',
'\.', '(substring).', 1, 1)
from dual;
REGEXP_REPLACE('AAAAAAAAAAAA.BBBBBBBBBBBBBB.','\.','(SUBST
----------------------------------------------------------
aa a aaa aa aa a a(substring). bbbbb bb bb bbb bb.
e.g:
a.
或者,如果您只想匹配a
,请在模式和替换字符串中加入regexp_replace(col1, 'a\.', 'a(substring).', 1, 1)
:
with t (id, col1) as (
select 1, 'aa aa a.bb bb bb.' from dual
union all select 2, 'aa a aa aa a a. bb bb bbb bb.' from dual
union all select 3, 'aa a aaa aa aa a a. bbbbb bb bb bbb bb.' from dual
union all select 4, 'aa a aaa aaa a a aa aa a a. bbbbb bb bb bb bb bbb bb.' from dual
)
select id, regexp_replace(col1, 'a\.', 'a(substring).', 1, 1) as col1
from t;
ID COL1
-- ------------------------------------------------------------------------
1 aa aa a(substring).bb bb bb.
2 aa a aa aa a a(substring). bb bb bbb bb.
3 aa a aaa aa aa a a(substring). bbbbb bb bb bbb bb.
4 aa a aaa aaa a a aa aa a a(substring). bbbbb bb bb bb bb bbb bb.
通过CTE获取所有样本数据:
a.
如果要修改{{1}}的所有外观,请调整或删除事件和位置参数。
如果您需要,可以使用相同的内容作为更新的一部分。