oracle字符串转in方法,Oracle 逗号分割的字符串转换为可放入in的语句
一、简介
最近在工作中,同事遇到一个问题,就是前台搜索条件传递过来 “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的语句相关推荐
- 【JS数组转逗号分割的字符串】
举例:在前端查询几个商品的详情时,需要把这几个商品的ID传过去,后台接口要求参数是以逗号分割的字符串类型 解决:把ID添加到一个数组里,如下使用join()方法转为逗号分割的字符串 ![在这里插入图片 ...
- oracle sql去差集,Oracle 两个逗号分割的字符串,获取交集、差集的sql实现过程解析...
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...
- oracle数据库 交集,Oracle两个逗号分割的字符串,获取交集、差集(sql实现过程解析)...
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...
- 如何把一段逗号分割的字符串转换成一个数组?
String.split() StringTokenizer类 package com.study.JavaBase;import org.junit.Test;import java.util.Ar ...
- Java将一段逗号分割的字符串转换成一个数组
String 类: String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象 ...
- Java将一段逗号分割的字符串转换成一个数组(亲测)
String 类: String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象 ...
- PHP根据逗号分割,将字符串转成数组
PHP根据逗号分割,将字符串转成数组 <?php$str = '电气鼠,蒹葭苍苍,小飞鱼,奶片';// 根据逗号分割,将字符串转成数组$array = explode(',', $str);ec ...
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...
<pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的
<pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...
最新文章
- 2021年大数据Hive(十一):Hive调优
- 219. Contains Duplicate II
- jquery 循环_jquery实现无限循环滚动
- java全局变量加锁_Java锁Synchronized,对象锁和类锁举例
- 一. JVM发展史,运行时数据区域,四大引用
- haproxy +keepalived 原创
- PostgreSQL的 initdb 源代码分析之十六
- shell之sed、awk
- opengl编程指南
- 教育版AutoCAD下载开启,你知道吗?
- 深度学习:文本CNN-textcnn
- c语言来用按键控制风扇转速,基于单片机的能风扇调速设计.doc
- 1人30天44587行代码,分享舍得网开发经验【修订版】
- ae合成设置快捷键_超全AE快捷键大全
- Syclover-Web题解
- 用C#编写一个图片浏览器,实现鼠标控制图片的平移缩放与图片的灰度化
- excel函数去重_Excel 2010中去除重复项的几种常用技巧
- html代码房地产,HTML白色宽屏形式房地产动态网页模板代码
- Sophos XG Firewall:如何使用Windows Server 2012为企业无线身份验证配置RADIUS
- 项管行知05--可交付成果