Обходной путь замены строки SQL - PullRequest
1 голос
/ 22 сентября 2009

Я работаю в модифицированной версии Sybase 10, в которой нет функций stuff, replace или str_replace. Мне нужно заменить часть строки в нескольких записях.

Есть ли какие-нибудь творческие способы программирования вокруг этого, так что мне не нужно делать их все вручную?

Пример:

UPDATE status
SET description = replace(description,'abc','def')
WHERE name = 'test'

РЕДАКТИРОВАТЬ: Я обнаружил, что у нас нет функций манипулирования строками, и мне придется выполнять экспорт и импорт, чтобы сделать массовые изменения строк. Я оставлю этот вопрос так, чтобы другие, кто не ограничен, как я, могли найти ответы.

Ответы [ 2 ]

6 голосов
/ 22 сентября 2009
UPDATE status
SET description = SUBSTRING(description,1,CHARINDEX('abc',description)-1) 
                  + 'def' + 
                  SUBSTRING(description,CHARINDEX('abc',description)+CHAR_LENGTH('abc'),CHAR_LENGTH(description)-CHARINDEX('abc',description))
WHERE name = 'test'

Сложно, и вы должны поместить текст, который вы хотите изменить, в нескольких местах, но это работает; -)

0 голосов
/ 22 сентября 2009

Комбинация charindex и подстроки должна работать для вас.

...