一、简介

最近在工作中,同事遇到一个问题,就是前台搜索条件传递过来 “2018级3年制,2018级4年制,...”这种用逗号分隔的字符串,然后后台他想使用not in来过滤数据。于是,我们一起研究了一下,以下是同事最开始写的sql:

select *

from (select f.*, f.nj || '级' || m.major_year || '年制' njyear

from v_zhxg_jf_sfxx_ys_ss_tz_jm_tf f

left join wp_kdb_major m

on f.zydm = m.major_key) t

where t.njyear not in

(select regexp_replace('.2018级5年制.,.2018级4年制.', '[.]', '''')

from dual)

根本没有效果,这就奇怪了。然后我们讨论了一下,其实使用in操作符的话,后面其实是接的多行结果那种格式的,观察下面两种情况。

【a】

select regexp_replace('.2018级5年制.,.2018级4年制.', '[.]', '''') from dual

【b】

select regexp_substr('2018级3年制,2018级4年制', '[^,]+', 1, level)

from dual

connect by regexp_substr('2018级3年制,2018级4年制', '[^,]+', 1, level) is not null

对比以上两个sql,应该可以看出区别了吧。

二、 解决方法

select *

from (select f.*, f.nj || '级' || m.major_year || '年制' njyear

from v_zhxg_jf_sfxx_ys_ss_tz_jm_tf f

left join wp_kdb_major m

on f.zydm = m.major_key) t

where to_char(t.njyear) not in

(select regexp_substr('2018级3年制,2018级4年制', '[^,]+', 1, level)

from dual

connect by regexp_substr('2018级3年制,2018级4年制',

'[^,]+',

1,

level) is not null)

问题解决,在此做个总结,以防后面踩坑。

oracle字符串转in方法,Oracle 逗号分割的字符串转换为可放入in的语句相关推荐

  1. 【JS数组转逗号分割的字符串】

    举例:在前端查询几个商品的详情时,需要把这几个商品的ID传过去,后台接口要求参数是以逗号分割的字符串类型 解决:把ID添加到一个数组里,如下使用join()方法转为逗号分割的字符串 ![在这里插入图片 ...

  2. oracle sql去差集,Oracle 两个逗号分割的字符串,获取交集、差集的sql实现过程解析...

    Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...

  3. oracle数据库 交集,Oracle两个逗号分割的字符串,获取交集、差集(sql实现过程解析)...

    Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...

  4. 如何把一段逗号分割的字符串转换成一个数组?

    String.split() StringTokenizer类 package com.study.JavaBase;import org.junit.Test;import java.util.Ar ...

  5. Java将一段逗号分割的字符串转换成一个数组

    String 类: String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象 ...

  6. Java将一段逗号分割的字符串转换成一个数组(亲测)

    String 类: String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象 ...

  7. PHP根据逗号分割,将字符串转成数组

    PHP根据逗号分割,将字符串转成数组 <?php$str = '电气鼠,蒹葭苍苍,小飞鱼,奶片';// 根据逗号分割,将字符串转成数组$array = explode(',', $str);ec ...

  8. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...

    <pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...

  9. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的

    <pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...

最新文章

  1. 2021年大数据Hive(十一):Hive调优
  2. 219. Contains Duplicate II
  3. jquery 循环_jquery实现无限循环滚动
  4. java全局变量加锁_Java锁Synchronized,对象锁和类锁举例
  5. 一. JVM发展史,运行时数据区域,四大引用
  6. haproxy +keepalived 原创
  7. PostgreSQL的 initdb 源代码分析之十六
  8. shell之sed、awk
  9. opengl编程指南
  10. 教育版AutoCAD下载开启,你知道吗?
  11. 深度学习:文本CNN-textcnn
  12. c语言来用按键控制风扇转速,基于单片机的能风扇调速设计.doc
  13. 1人30天44587行代码,分享舍得网开发经验【修订版】
  14. ae合成设置快捷键_超全AE快捷键大全
  15. Syclover-Web题解
  16. 用C#编写一个图片浏览器,实现鼠标控制图片的平移缩放与图片的灰度化
  17. excel函数去重_Excel 2010中去除重复项的几种常用技巧
  18. html代码房地产,HTML白色宽屏形式房地产动态网页模板代码
  19. Sophos XG Firewall:如何使用Windows Server 2012为企业无线身份验证配置RADIUS
  20. 项管行知05--可交付成果

热门文章

  1. 使用resnet训练CIFAR10
  2. Java并发——CAS
  3. Blink Coordinate Spaces
  4. 如何解决ORA-12547错误!
  5. Linux-unit12
  6. C/C++ 头文件作用
  7. poj3934Queue(dp)
  8. 等待队列wait queue
  9. RhinoMock学习-绑定回调
  10. ECharts开源图表使用方法简单介绍