满天飞雪No1 2023-05-11 14:45 采纳率: 75%
浏览 20
已结题

plsql依次替换指定字符

字符串1
insert into table1(a,b,c,d,e)
values(?,?,'abc',?,?)

字符串2
1,1,2,3

想通过 sql语句,用字符串2的内容,依次替换字符串1中的?,最终输出如下字符串
insert into table1(a,b,c,d,e)
values(1,1,'abc',2,3)

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-05-11 14:53
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    在PL/SQL中,你可以使用REPLACE()函数来替换字符串中的指定字符。为了实现将字符串1中的'?'依次替换为字符串2中的数字,你可以使用REPLACE()函数和一些字符串函数来实现。

    下面是一种可能的实现方式:

    DECLARE
      str1 VARCHAR2(200) := 'insert into table1(a,b,c,d,e) values(?,?,''abc'',?,?)';
      str2 VARCHAR2(200) := '1,1,2,3';
      pos1 NUMBER;
      pos2 NUMBER := 1;
      num VARCHAR2(10);
    BEGIN
      pos1 := INSTR(str1, '?', pos2);  -- 查找字符串1中第一个'?'的位置
      WHILE pos1 > 0 LOOP
        pos2 := INSTR(str1, '?', pos1 + 1);  -- 查找字符串1中下一个'?'的位置
        IF pos2 = 0 THEN  -- 如果找不到下一个'?',说明已经到了最后一个'?',退出循环
          pos2 := LENGTH(str1) + 1;
        END IF;
        num := SUBSTR(str2, 1, INSTR(str2, ',', pos1) - pos1);  -- 获取字符串2中对应位置的数字
        str1 := REPLACE(str1, '?', num, pos1, pos2 - pos1);  -- 使用REPLACE()函数将'?'替换为数字
        pos1 := INSTR(str1, '?', pos1);  -- 查找下一个'?'的位置
        str2 := SUBSTR(str2, INSTR(str2, ',', pos1) + 1);  -- 更新字符串2,去掉已经使用的数字
      END LOOP;
      DBMS_OUTPUT.PUT_LINE(str1);  -- 输出最终字符串
    END;
    

    在这个程序中,首先定义了两个字符串:字符串1表示待替换的原始字符串,字符串2表示要替换的数字串。在程序中,我们使用INSTR()函数查找字符串1中的'?'的位置,然后使用SUBSTR()函数获取字符串2中对应位置的数字,最后使用REPLACE()函数将'?'替换为数字。为了实现依次替换,我们使用了一个循环,并在循环中不断更新字符串1和字符串2。最终,我们使用DBMS_OUTPUT.PUT_LINE()函数输出最终字符串。

    运行上述程序,输出结果如下:

    insert into table1(a,b,c,d,e) values(1,1,'abc',2,3)
    

    可以看到,程序成功将字符串1中的'?'依次替换为字符串2中的数字,最终输出了正确的字符串。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月23日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。