REPLACE STRING

REPLACE STRING разрешает операции строковой замены в выбранных строковых столбцах запроса SQL.

В следующих объяснениях
  • пара_для_замены обозначает следующую последовательность: “имя_столбца|литерал [BY имя_столбца|литерал]”.
  • спецификация_столбцов обозначает "FOR|EXCEPT (столбец[,столбец,столбец...])"
Вместе с одной или несколькими парами_для замены со спецификацией_столбцов можно задать пару_для_замены без спецификации_столбцов. В таком сценарии пара_для_замены без спецификации_столбцов применяется по умолчанию ко всем столбцам, не заданным в опции FOR.
Синтаксис
REPLACE STRING (имя_столбца | "строка" [BY имя_столбца | "строка"] [ FOR|EXCEPT (имя_столбца)] )
Переменные
имя_столбца

Имя столбца в операторе SELECT *.

"строка"

Строка из одного или нескольких символов.

Аргумент имя_столбца/"строка" эквивалентен второму аргументу строка-поиска в скалярной функции Db2 REPLACE.

По умолчанию
Нет.

Опции

BY имя_столбца / "строка”
Если эта опция пропущена, строка замены является пустой строкой. Выражение имя_столбца/"строка" эквивалентно третьему аргументу строка-замены в скалярной функции Db2 REPLACE.
FOR (имя_столбца)
Эта опция позволяет задать один или несколько столбцов строкового типа, для которых будет применено условие REPLACE STRING. Аргумент имя_столбца эквивалентен первому аргументу исходная-строка в скалярной функции Db2 REPLACE.
EXCEPT (имя_столбца)
Эта опция позволяет задать один или несколько столбцов строкового типа, для которых не будет применено условие REPLACE STRING.

Правила

В случае невыполнения следующих правил выводится сообщение об ошибке:
  • Опции FOR или EXCEPT должны использоваться только с оператором “SELECT *”.
  • В условии REPLACE STRING должна быть только одна опция EXCEPT.
  • При использовании опций EXCEPT и FOR в условии REPLACE STRING столбец строкового типа, заданный в опции FOR, должен быть задан в опции EXCEPT.
  • В условии REPLACE STRING может быть несколько опций FOR, но заданные имена столбцов строкового типа могут встречаться только один раз.
  • Разрешается только одна пара_для_замены без спецификации_столбцов.
Выводится сообщение о том, что при обработке оператора SELECT при помощи Db2 условие REPLACE STRING было проигнорировано.
Если ни опция FOR, ни опция EXCEPT не задана в условии REPLACE STRING, строковая замена будет выполнена для всех заданных в запросе SQL столбцов строкового типа.

Примеры

Использование запроса SQL “SELECT *”:
[i1010@lat179(:) ~]$ db2hpu -f sysin -i i1010
INZM031I Optim High Performance Unload for Db2 06.01.00.001(121203)
         64 bits 12/03/12 (Linux lat179 3.1.9-1.4-desktop x86_64)
INZI473I Ограничения памяти: 'неограничено' для виртуальной памяти и 'неограничено' для сегмента данных
       ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 DB2 NO
000004 LOCK NO
000005 FLUSH BUFFERPOOLS NO
000006 REPLACE STRING ('E' BY 'e' FOR (FIRSTNME), 'A' BY 'a' EXCEPT(FIRSTNME, JOB), 'R' BY 'r')
000007 SELECT * FROM EMPLOYEE;
000008 FORMAT DEL;

INZU462I Начало шага управления HPU: 10:34:09.780.
INZU463I Окончание шага управления HPU: 10:34:09.783.
INZU464I Начало шага выполнения HPU: 10:34:09.794.
"000010","CHRISTINe","I","HaaS","a00","3978","1995-01-01","PrES    ","18","F","1963-08-24","152750.00","1000.00","4220.00"
"000020","MICHAeL","L","THOMPSON","B01","3476","2003-10-10","MANAGEr ","18","M","1978-02-02","94250.00","800.00","3300.00"
"000030","SALLY","a","KWaN","C01","4738","2005-04-05","MANAGEr ","20","F","1971-05-11","98250.00","800.00","3060.00"
...
INZU410I Утилита HPU выгрузила строк: 42, на хост lat179, для таблицы I1010.EMPLOYEE в файл stdout.
INZU465I Окончание шага выполнения HPU: 10:34:09.799.
INZI441I Утилита HPU успешно выполнена: фактическое время -> 0m0.018693s
Пользовательское время -> 0m0.018997s : родительский  элемент -> 0m0.018997s, дочерний элемент -> 0m0.000000s
Системное время -> 0m0.015997s : Родительский процесс -> 0m0.015997s, Дочерние процессы -> 0m0.000000s
Использование пользовательского запроса SQL:
[i1010@lat179(:) ~]$ db2hpu -f sysin -i i1010
INZM031I Optim High Performance Unload for Db2 06.01.00.001(121203) 
         64 bits 12/03/12 (Linux lat179 3.1.9-1.4-desktop x86_64)
INZI473I Ограничения памяти: 'неограничено' для виртуальной памяти и 'неограничено' для сегмента данных
       ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 DB2 NO
000004 LOCK NO
000005 FLUSH BUFFERPOOLS NO
000006 REPLACE STRING ('A' BY 'a') 
000007 SELECT EMPNO, FIRSTNME, LASTNAME FROM EMPLOYEE;
000008 FORMAT DEL;

INZU462I Начало шага управления HPU: 10:37:33.573.
INZU463I Окончание шага управления HPU: 10:37:33.598.
INZU464I Начало шага выполнения HPU: 10:37:33.600.
"000010","CHRISTINE","HaaS"
"000020","MICHaEL","THOMPSON"
"000030","SaLLY","KWaN"
...
INZU410I Утилита HPU выгрузила строк: 42, на хост lat179, для таблицы I1010.EMPLOYEE в файл stdout.
INZU465I Окончание шага выполнения HPU: 10:37:33.604.
INZI441I HPU успешно завершена: фактическое время -> 0m0.030913s
Пользовательское время -> 0m0.023996s : родительский элемент -> 0m0.023996s, дочерний элемент -> 0m0.000000s
Системное время -> 0m0.009998s : родительский элемент -> 0m0.009998s, дочерний элемент -> 0m0.000000s