2016-02-12 80 views
-2

在我的表中的數據是這樣的:如何將字符串插入現有字符串?

 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. 
+1

請明確表格的樣子,最好是創建表格x作爲select語句,或者至少使用明確的列名稱。然後,請添加預期的輸出。 –

+0

你只改變'a.',其中'a'是一個固定值;或者第一個出現在字符串中的時間段,而不管前後是什麼(如果有的話)? –

+0

固定值 - 第一點和第二點。 –

回答

1

您可以使用顯式的字符串操作,爲此該功能在其他數據庫可用:

  • stuff()(在SQL Server中)
  • insert()(MySQL)
0

您可以使用正則表達式,與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.悉數亮相,然後調整或拆除的發生和位置參數。

如果這是您需要的,您可以使用相同的東西作爲更新的一部分。

+0

該字符串是解釋變量。 行數 - 太可變。 –

+0

固定值 - 第一點和第二點。 –

+0

@VitalieBancu - 對不起,我真的不明白你的意思。你的例子都有一個插入。這些模式中的任何一種都會將您顯示的原始數據更改爲您顯示的結果。 –