Sql DB2中的datastage转换函数等效于什么

Sql DB2中的datastage转换函数等效于什么,sql,db2,db2-luw,datastage,Sql,Db2,Db2 Luw,Datastage,Convert函数返回变量的副本,变量中每次出现的指定字符都替换为其他指定字符。每次要转换的字符出现在变量中时,都会被替换字符替换。 例如: 输出 NOW IS THE TIME NOW YS XHE XYME NOW S THE TME 如何在db2查询中实现这一点。您可以使用: 我认为等价物是: 他是一把小提琴 这并不完全相同。不幸的是,默认情况下,DB2中的translate()不会删除字符(Oracle中的translate())。相反,当“to”字符串比“from”字符串短时,DB2

Convert函数返回变量的副本,变量中每次出现的指定字符都替换为其他指定字符。每次要转换的字符出现在变量中时,都会被替换字符替换。 例如:

输出

NOW IS THE TIME
NOW YS XHE XYME
NOW S THE TME
如何在db2查询中实现这一点。

您可以使用:

我认为等价物是:

他是一把小提琴

这并不完全相同。不幸的是,默认情况下,DB2中的
translate()
不会删除字符(Oracle中的
translate()
)。相反,当“to”字符串比“from”字符串短时,DB2会将其替换为空格或显式填充字符。它仅在
键盘长度为零时删除字符

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

DB2中的REPLACE函数将源字符串中出现的所有搜索字符串替换为REPLACE字符串。若在源字符串中找不到搜索字符串,则返回的源字符串将保持不变。
有用的是,DataStage还有一个Replace()函数,具有相同的功能。

TRANSLATE在DB2 LUW中是一个功能完全等效的函数(例如9.7):


为什么不使用带空填充的TRANSLATE,它适用于LUW DB2 9.7:TRANSLATE('NOW IS TIME','I','')=='NOW IS THE TME';请参见此处:“该值的长度属性必须为零或一。如果指定了零长度字符串,则从char string exp或graphic-string-exp中删除from string exp中没有对应字符的字符。”
REPLACE(A, 'TI', 'XY')
translate(A, 'XY', 'TI')
select translate(translate('NOW IS THE TIME', 'XY', 'TI'), 'T', 'XY', '')
from sysibm.sysdummy1
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