что эквивалентно функции преобразования данных в DB2 - PullRequest
1 голос
/ 29 апреля 2020

Функция преобразования возвращает копию переменной, при которой каждое вхождение указанных символов в переменной заменяется другими указанными символами. Каждый раз, когда символ, подлежащий преобразованию, появляется в переменной, он заменяется символом замены. пример:

A="NOW IS THE TIME"
PRINT A
A=CONVERT('TI','XY',A)
PRINT A
A=CONVERT('XY','T',A)
PRINT A

OUTPUT

NOW IS THE TIME
NOW YS XHE XYME
NOW S THE TME

Как этого добиться в запросе db2.

Ответы [ 4 ]

1 голос
/ 29 апреля 2020

Я думаю, что эквивалент равен translate():

translate(A, 'XY', 'TI')

Здесь - это дБ <> скрипка.

Это не точно эквивалент. К сожалению, translate() в DB2 не удаляет символы (translate() в Oracle делает по умолчанию). Вместо этого DB2 заменяет их пробелами или явным символом заполнения, когда строка «to» короче, чем строка «from». Он удаляет символы только тогда, когда длина pad равна нулю.

select translate(translate('NOW IS THE TIME', 'XY', 'TI'), 'T', 'XY', '')
from sysibm.sysdummy1
0 голосов
/ 04 мая 2020

TRANSLATE является полностью функциональным эквивалентом в DB2 LUW (например, 9.7): https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000862.html

SET A = 'NOW IS THE TIME';
--PRINT A
SET A = TRANSLATE(A, 'XY', 'TI');
--PRINT A
SET A = TRANSLATE(A, 'T', 'XY', ''); --empty padding crucial!
--PRINT A
0 голосов
/ 30 апреля 2020

Функция REPLACE в DB2 заменяет все вхождения строки поиска в строке источника строкой замены. Если строка поиска не найдена в исходной строке, исходная строка возвращается без изменений. https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/sqlref/src/tpc/db2z_bif_replace.html Полезно, чтобы DataStage также имел функцию Replace () с той же функциональностью.

0 голосов
/ 29 апреля 2020

Вы можете использовать replace:

REPLACE(A, 'TI', 'XY')
...