【问题标题】:what is the equivalent of datastage convert function in DB2DB2 中的 datastage 转换函数的等价物是什么
【发布时间】:2020-04-29 13:45:06
【问题描述】:

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

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

输出

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

如何在 db2 查询中实现这一点。

【问题讨论】:

    标签: sql db2 db2-luw datastage


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      我认为相当于translate():

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

      Here 是一个数据库小提琴。

      这不是完全等效的。不幸的是,默认情况下,DB2 中的translate() 不会删除字符(Oracle 中的translate() 会删除字符)。相反,当“to”字符串比“from”字符串短时,DB2 会用空格或显式填充字符替换它们。只有当pad 的长度为零时,它才会删除字符。

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

      【讨论】:

      • 为什么不使用带有空填充的 TRANSLATE,适用于 LUW DB2 9.7: translate('NOW IS THE TIME', '', 'I', '') == 'NOW S THE TME' ;请参阅ibm.com/support/knowledgecenter/SSEPGG_9.7.0/…,其中:“该值的长度属性必须为零或一。如果指定了零长度字符串,则删除 from-string-exp 中的字符,而 to-string-exp 中没有相应的字符来自 char-string-exp 或 graphics-string-exp。”
      【解决方案3】:

      你可以使用replace:

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

      【讨论】:

        【解决方案4】:

        DB2 中的 REPLACE 函数将 source-string 中所有出现的 search-string 替换为 replace-string。如果在 source-string 中找不到 search-string,则 source-string 原样返回。 https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/sqlref/src/tpc/db2z_bif_replace.html 有用的是,DataStage 还有一个 Replace() 函数,具有相同的功能。

        【讨论】:

          猜你喜欢
          • 2020-01-07
          • 1970-01-01
          • 1970-01-01
          • 2020-02-13
          • 2019-12-07
          • 2023-01-17
          • 1970-01-01
          • 2011-12-11
          • 1970-01-01
          相关资源
          最近更新 更多