2014-12-29 6 views
0

Я использую Oracle 11.g. Я должен до replace строки в клипе электронной почты, прежде чем отправить его. Большая строка выглядит следующим образом:SQL заменить строку переменным положением символов

<p> 
Text right before the HP image.</p> 
<p> 
<img alt="" src="data:image/jpeg;base64,//(a variable amount of encoded data)//"></p> 
<p> 
Text right after the image.</p> 
<p> 
&nbsp;</p> 

текст перед тем, а также текст после IMG тега будет переменной длины. Я хотел бы заменить большое количество текста в IMG тега:

<img alt="" src="data:image/jpeg;base64,//(a variable amount of encoded data)//"> 

С текстом последовательно:

<img src="cid:image.jpg" alt="This is a banner"/> 

я использую INSTR, чтобы найти начало и конец IMG тега и хранить их в локальных переменных. Я не могу понять, как заменить эти переменные позиции.

Я ценю вашу помощь.

ответ

1

Вы должны быть в состоянии использовать REGEXP_REPLACE() для достижения этой цели:

SELECT REGEXP_REPLACE(mytext, '<img alt="" src="data:image/jpeg;base64,[^"]*">', '<img src="cid:image.jpg" alt="This is a banner"/>', 'i') AS mynewtext 
    FROM mytable 

Было бы лучше, чтобы сделать поиск и замена в вашем представляемом коде, а не в самом запросе.

+0

David. Это сработало отлично. Спасибо за вашу помощь! – user3138025

+0

Добро пожаловать. Регулярные выражения отлично подходят для такого рода вещей, и у Oracle есть достойный механизм регулярных выражений. –

Смежные вопросы