Мне нужно написать текст SQL для замены только целых слов.
Для "целого слова" я имею в виду все вхождения, которые не являются частью другого буквенно-цифрового слова.
Пример:
Замена 'abc' на 'xyz'
| MYFIELD |
| 'test abc test' |
| 'abctest' |
| 'testabctest' |
| 'testabc' |
| 'abc test' |
| 'test abc' |
| 'abc' |
| ' abc ' |
Ожидаемый результат:
| MYFIELD |
| 'test xyz test' |
| 'abctest' |
| 'testabctest' |
| 'testabc' |
| 'xyz test' |
| 'test xyz' |
| 'xyz' |
| ' xyz ' |
Я подготовил пример с использованием обычного механизма регулярных выражений.
Я пытался перенести тот же RegEx в Firebird SQL, используя SIMILAR TO , но он не работал должным образом:
UPDATE mytable
SET mytable = REPLACE(myfield, 'abc', 'xyz')
WHERE myfield SIMILAR TO '\babc\b'