代码之家  ›  专栏  ›  技术社区  ›  Bernd

在DB2SQL中将字符串中的第113个位置替换为“X”

  •  0
  • Bernd  · 技术社区  · 2 年前

    我正在寻找一个替换字符串中第113个位置的解决方案。

    到目前为止,我发现的唯一解决方案是这个,然而,它不是一个解决方案,因为它用X替换了所有空间。

    我不能使用STUFF函数或类似的函数,因为我在DB2V11.2上运行。

    以下是我迄今为止所掌握的信息:

    SELECT
      REPLACE(COLUMN_NAME, SUBSTR(COLUMN_NAME,113,1), 'N')
    FROM TABLE_NAME;
    

    结果是所有的空间都被N所取代。 然而,我只想用“N”替换第113个位置,如果字符串没有那么长,就不会发生任何事情!

    因为,看起来,我有一个相当旧的DB2版本,所以我没有CHARDINDEX、STUFF或任何可用的函数。

    也许,有人知道我如何才能只改变第113位的角色?

    提前非常感谢!

    2 回复  |  直到 2 年前
        1
  •  1
  •   user2398621    2 年前

    请尝试以下操作: 覆盖(column_name,'N',113,1)

        2
  •  0
  •   nbk    2 年前

    为此,您可以使用reg_replace

    CREATE tABLE test (te CHAR(125))
    
    INSERT INTO test VALUES('12345678901234567890234567890')
    
    SELECT SUBSTR(TE,14,1) FROM test
    
    1.
    4.
    SELECT
      REPLACE(TE, SUBSTR(TE,14,1), 'N')
    FROM test;
    
    
    1.
    123n567890123n5678923n567890
    SELECT REGEXP_REPLACE(
      TE,SUBSTR(TE,14,1), 'N', 13,1,'c' )
          FROM test
    
    1.
    1234567890123N567890234567890

    fiddle