如何将字符串插入现有字符串?
在我的表中的数据是这样的:如何将字符串插入现有字符串?
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.
我如何在现有列字符串值第一个句号/期前加一个固定的字符串值?我需要的结果是这样的:
select substr(col, 1, n) || string || substr(col, n+1)
补充说明:
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.
您可以使用显式的字符串操作,为此该功能在其他数据库可用:
-
stuff()
(在SQL Server中) -
insert()
(MySQL)
您可以使用正则表达式,与the regexp_replace()
function:
regexp_replace(col1, '\.', '(substring).', 1, 1)
如:
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.
或者,如果你只是想匹配a.
,包括模式和替代字符串a
:
regexp_replace(col1, 'a\.', 'a(substring).', 1, 1)
将所有样本数据通过CTE :
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.
如果要修改的a.
悉数亮相,然后调整或拆除的发生和位置参数。
如果这是您需要的,您可以使用相同的东西作为更新的一部分。
该字符串是解释变量。 行数 - 太可变。 –
固定值 - 第一点和第二点。 –
@VitalieBancu - 对不起,我真的不明白你的意思。你的例子都有一个插入。这些模式中的任何一种都会将您显示的原始数据更改为您显示的结果。 –
请明确表格的样子,最好是创建表格x作为select语句,或者至少使用明确的列名称。然后,请添加预期的输出。 –
你只改变'a.',其中'a'是一个固定值;或者第一个出现在字符串中的时间段,而不管前后是什么(如果有的话)? –
固定值 - 第一点和第二点。 –