carrot 1 2023-04-24 16:05 采纳率: 33.8%
浏览 87
已结题

oracle,怎么写sql可以提取到特定内容

oracle,怎么写sql可以提取到特定内容?实例如下,左图content中是一串文本,从该段文本中提取“测试、其他、存在”到右侧单独列。

img

  • 写回答

8条回答 默认 最新

  • 语言-逆行者 2023-04-24 16:16
    关注

    基于new bing的回答:

    SELECT
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 1, 'i') AS keyword1,
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 2, 'i') AS keyword2,
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 3, 'i') AS keyword3
    FROM
        test_table;
    
    

    在上面的 SQL 语句中,我们通过使用 REGEXP_SUBSTR 函数从 content 列中提取符合正则表达式 '测试|其他|存在' 的子字符串,并在第四个参数中指定不区分大小写('i')。在 SELECT 子句中,我们给每一个提取出来的子字符串起了一个别名(keyword1, keyword2, keyword3),方便后续使用。

    注意:如果有些行中没有这三个关键字,则对应的列会显示 NULL。

    -- 插入
    INSERT INTO test_table (result)
    SELECT 
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 1, 'i') || ', ' || 
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 2, 'i') || ', ' || 
        REGEXP_SUBSTR(content, '测试|其他|存在', 1, 3, 'i')
    FROM 
        test_table;
    
    -- 更新
    UPDATE test_table
    SET result = REGEXP_SUBSTR(content, '测试|其他|存在', 1, 1, 'i') || ', ' || 
                 REGEXP_SUBSTR(content, '测试|其他|存在', 1, 2, 'i') || ', ' || 
                 REGEXP_SUBSTR(content, '测试|其他|存在', 1, 3, 'i');
    
    
    

    在上述的 SQL 语句中,我们通过使用 || 操作符来连接多个字符串,生成最终的 result 列的值。其中 INSERT INTO 语句会将 result 列插入到 test_table 表中,而 UPDATE 语句会更新表中原有的 result 列。需要注意的是,在执行 UPDATE 语句时,原有的 result 列中的数据会被覆盖。

    希望我的回答能够解决你的问题!

    评论

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 请采纳用户回复 4月25日
  • 请提交代码 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
  • ¥15 结果有了,想问一下这个具体怎么输入
  • ¥15 怎么修改鸿蒙app的UI及功能设计
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误