【问题标题】:Oracle SQL Multi UpdateOracle SQL 多更新
【发布时间】:2020-12-01 11:11:07
【问题描述】:

请编辑公关号码

L3970076 to L3970276, 
L3970077 to L3970277, 
L3970078 to L3970278, 
L3970080 to L3970280, 
L3970082 to L3970282, 
L3970083 to L3970283, 
L3970085 to L3970285

SELECT * FROM GNGRB.PRFILE WHERE PRNO IN ('L3970076', 'L3970077', 'L3970078', 'L3970080', 'L3970082', 'L3970083', 'L3970085');

如何更新

【问题讨论】:

    标签: sql oracle sql-update


    【解决方案1】:

    假设所有字符串都具有相同的长度,并且您总是必须将第 6 个字符编辑为“2”,这可能就足够了:

    update gngrb.prfile
    set prno = substr(prno, 1, 5) || '2' || substr(prno, 7)
    where ...
    

    【讨论】:

      【解决方案2】:

      你似乎想要一个case 表达式:

      update gngrb.prfile
      set prno = case prno
          when 'L3970076' then 'L3970276'
          when 'L3970077' then 'L3970277'
          when 'L3970078' then 'L3970278'
          when 'L3970080' then 'L3970280'
          when 'L3970082' then 'L3970282'
          when 'L3970083' then 'L3970283'
          when 'L3970085' then 'L3970285'
      end
      where prno in (
          'L3970076', 
          'L3970077', 
          'L3970078', 
          'L3970080', 
          'L3970082', 
          'L3970083', 
          'L3970085'
      );
      

      【讨论】:

        【解决方案3】:

        您可以使用SUBSTRREGEXP_REPLACE,如下所示:

        UPDATE GNGRB.PRFILE
           SET
            PRNO = SUBSTR(PRNO,1) || (SUBSTR(PRNO,2) + 200)
            --PRNO  = REGEXP_REPLACE(PRNO ,'(^.{5})(0)([0-9]{2}$)','\12\3')
         WHERE PRNO IN (
            'L3970076',
            'L3970077',
            'L3970078',
            'L3970080',
            'L3970082',
            'L3970083',
            'L3970085'
        );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-24
          • 2018-08-12
          • 1970-01-01
          相关资源
          最近更新 更多