oracle 判断字符串是否包含指定内容
1.情景展示
如何将表中的包含特殊字符的脏数据查出来?

2.instr()函数
语法:
instr(string, substring[, start_position[, th_appearance]])
参数说明:
第1个参数表示:必选项。将要被检索的字符串,可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB等类型;
第2个参数表示:必选项。将要查找的字符串,可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB等类型;
第3个参数表示:可选项。从字符串第几(start_position)位开始搜索; 默认值为1;正数,从前往后查找;负数,从后往前查找;
第4个参数表示:可选项。要查找的字符串的第几(th_appearance)次出现; 默认值为1;
返回值:返回substring在string的位置;如果在字符串中找不到substring,将返回0。
说明:字符串中的第一个位置是1。
3.解决方案
方式一:使用instr()函数(推荐使用);
总数据

两个查询结果一致,由此可见:
该表不存在重复数据;
id_card字段在该表的数据都是唯一的。
正确实现:
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '*') > 0
UNION
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '#') > 0
UNION
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '/') > 0
UNION
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '+') > 0
UNION
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '!') > 0
UNION
SELECT T1.ID_CARD
FROM VIRTUAL_CARD_TEST T1
WHERE INSTR(T1.NAME, '.') > 0

分析:查询的时候至少要携带一个唯一字段(主键或id_card),为什么?
其一:姓名肯定有重复的,但又不能使用关键字union进行去重,会导致数据缺失;

其二:姓名可能包含好几个特殊字符,每判断一次,就会叠加一次,会多于实际数据。

方式二:使用like关键字实现。
4.排除脏数据查询
错误方式:

错在哪?
当脏数据都包含所有特殊字符时,可以使用该方法。
正确方式:

5.删除脏数据
见文末推荐
oracle 判断字符串是否包含指定内容的更多相关文章
- js判断字符串是否包含指定的字符
判断字符串是否包含指定字符是很常用的功能,比如说,注册时用户名限制不能输入"管理员",或者需要js判断url跳转链接是否包含某个关键词等-- <!DOCTYPE html&g ...
- excel判断单元格包含指定内容的函数用=IF(COUNTIF(A1,"*内容*"),"0","1")
前面我们聊过怎样将Excel包含某字符的单元格填充颜色,这边我们用另外一种方法来实现:excel判断单元格包含指定内容的函数 选中需要显示结果的单元格,假设我们要判断第一行第一列的单元格A1是否含有“ ...
- Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串
Jquery 选择器 详解 在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...
- SQL中判断字符串中包含字符的方法
通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用 函数:CHARINDEX和PATINDEX CHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始 ...
- PHP判断字符串的包含
PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数strstr,strpos,stristr直接进行判断.也可以通过ex ...
- Java:判断字符串中包含某字符的个数
Java:判断字符串中包含某字符的个数 JAVA中查询一个词在内容中出现的次数: public int getCount(String str,String key){ if(str == null ...
- [转帖]linux下查找文件及查找包含指定内容的文件常用命令。
linux下查找文件及查找包含指定内容的文件常用命令. https://blog.csdn.net/yangyu19910407/article/details/18266821 最简单的查找 fin ...
- 判断字符串是否包含字母‘k’或者‘K’
判断字符串是否包含字母‘k’或者‘K’ public bool IsIncludeK(string temp) { temp = temp.ToLower(); if (temp.Contains(' ...
- 【功能代码】---3 JS判断字符串是否包含某个字符串
JS判断字符串是否包含某个字符串 var str ="abc"; if(str.indexOf("bc")>-1){ alert('str中包含bc字符串 ...
随机推荐
- LaTeX技巧205:使用split输入多行公式技巧
我们在输入多行公式的时候,split,array,multiline,align,aligned等等都是我们可以选用的环境,这里介绍split的使用方法.演示效果图: 演示代码:\documentcl ...
- YAML文件简介
编程免不了要写配置文件,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAML 的语法,以 JS-YAML 的实现为例.你可以去 ...
- delete method not allowed 405错误
造成该问题的原因:iis版本问题 解决办法如下: 修改配置文件web.config <system.webServer><modules><remove name=&qu ...
- 【BZOJ】【3931】【CQOI2015】网络吞吐量
最短路+最大流 思维难度并不高,其实题面几乎已经把算法讲完了…… 练习模板的好题= = 哦对了,求最短路和最大流的时候都得开long long……QwQ /********************** ...
- RxJava RxLifecycle 生命周期 内存泄漏 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- CentOS 6和CentOS 7防火墙的关闭
CentOS6.5查看防火墙的状态: 1 [linuxidc@localhost ~]$service iptable status 显示结果: 1 2 3 4 5 [linuxidc@localho ...
- jQuery对象初始化的多种传参数形式
jQuery对象初始化的传参方式包括:1.$(DOMElement)2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常 ...
- canvas移动端常用技巧图片loading
核心知识点:drawImage 作用:将图片加载在canvas html: <canvas id="myCanvas" width="200" heigh ...
- C++类中的访问权限问题
纠结的东西: private,public,protected方法的访问范围.(public继承下)private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. p ...
- Concurrent HTTP connections in Node.js
原文: https://fullstack-developer.academy/concurrent-http-connections-in-node-js/ -------------------- ...