Пользователь SQLServer 2005
Вот пример строки, с которой я застрял: {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Arial Rounded MT Bold;} {\ f1 \ fnil \ fcharset0 Arial;}} \ viewkind4 \ uc1 \ pard \ f0 \ fs54 1000 \ f1 \ fs20 \ par}
Я хочу заменить любое имя шрифта на «Times New Roman»
Я могу получить первый с (textlong1 это поле):
Select Replace(textlong1,
CASE When CharIndex(';',textlong1)> 10 Then
SubString(textlong1
, Charindex('fcharset',textlong1)+10
, CharIndex(';',textlong1) - Charindex('fcharset',textlong1)-10)
Else '' End
, 'Times New Roman') From exampletable
Я использую оператор case для предотвращения ошибки в SubString.
Поскольку я не заменяю 'fcharset', даже если я перебираю цикл, он не находит второй экземпляр (всегда застревает на первом).