在DB2中,什么是数据阶段转换函数的等价物?

问题描述 投票:0回答:2

转换函数返回一个变量的副本,将变量中每一个指定的字符替换为其他指定的字符。每当变量中出现一个要转换的字符时,它就会被替换掉。

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查询中实现这个功能。

sql db2 db2-luw datastage
2个回答
1
投票

TRANSLATE在DB2 LUW(如9.7)中是一个功能齐全的等价物。https:/www.ibm.comsupportknowledgecenterSSEPGG_9.7.0com.ibm.db2.luw.sql.ref.docdocr0000862.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

1
投票

我认为相当于 translate():

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

这里 是一个db<>提琴。

这不是 恰恰 相当于。 不幸的是, translate() 在DB2中不删除字符(translate() 在Oracle中就是如此)。 相反,当 "to "字符串比 "from "字符串短时,DB2会用空格或显式垫字符来替换它们。 它只在 pad 长度为零。

select translate(translate('NOW IS THE TIME', 'XY', 'TI'), 'T', 'XY', '')
from sysibm.sysdummy1

0
投票

您可以使用 replace:

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

0
投票

DB2中的REPLACE函数用replace-string替换source-string中所有出现的search-string。如果在source-string中没有找到search-string,则source-string将原封不动地返回。https:/www.ibm.comsupportknowledgecenterenSSEPEK_10.0.0sqlrefsrctpcdb2z_bif_replace.html有意思的是,DataStage还有一个Replace()函数,具有同样的功能。

© www.soinside.com 2019 - 2024. All rights reserved.