博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle统计之like,or关键字
阅读量:4588 次
发布时间:2019-06-09

本文共 2658 字,大约阅读时间需要 8 分钟。

有的时候我们统计需要like多个条件,比如某个字段中含有 “银行”或者“投资公司”,这个时候就用like多个字段。

如下是统计某个地区的2015年入院的病种诊断中带有 “癌”或者“肿瘤”的情况,

正确的写法如:

1 SELECT B.AAC002 身份证号, 2        B.AAC003 姓名, 3        TEMP_FUNC_WYL('AAC004', B.AAC004) 性别, 4        C.AAB004 单位, 5        C.AAB999 单位编号, 6        D.AAE006 地址, 7        D.AAE005 联系电话, 8        SUBSTR(A.CKC537, 1, 8) 入院时间, 9        SUBSTR(A.CKC538, 1, 8) 出院时间,10        A.CKC546 出院诊断,11        A.CKB519 就诊医院12   FROM KC21 A, AC01 B, AE01 C, SAC02 D13  WHERE A.AAC001 = B.AAC00114    AND B.AAC001 = D.AAC00115    AND B.AAB001 = C.AAB00116    AND B.BAE001 = '511502'17    AND SUBSTR(A.CKC537, 1, 4) = 201518    AND A.CKC546 LIKE '%癌%'19  GROUP BY B.AAC002,20           B.AAC003,21           B.AAC004,22           C.AAB004,23           C.AAB999,24           D.AAE006,25           D.AAE005,26           A.CKC537,27           A.CKC538,28           A.CKC546,29           A.CKB51930 UNION ALL31 SELECT B.AAC002 身份证号,32        B.AAC003 姓名,33        TEMP_FUNC_WYL('AAC004', B.AAC004) 性别,34        C.AAB004 单位,35        C.AAB999 单位编号,36        D.AAE006 地址,37        D.AAE005 联系电话,38        SUBSTR(A.CKC537, 1, 8) 入院时间,39        SUBSTR(A.CKC538, 1, 8) 出院时间,40        A.CKC546 出院诊断,41        A.CKB519 就诊医院42   FROM KC21 A, AC01 B, AE01 C, SAC02 D43  WHERE A.AAC001 = B.AAC00144    AND B.AAC001 = D.AAC00145    AND B.AAB001 = C.AAB00146    AND B.BAE001 = '511502'47    AND SUBSTR(A.CKC537, 1, 4) = 201548    AND A.CKC546 LIKE '%肿瘤%'49  GROUP BY B.AAC002,50           B.AAC003,51           B.AAC004,52           C.AAB004,53           C.AAB999,54           D.AAE006,55           D.AAE005,56           A.CKC537,57           A.CKC538,58           A.CKC546,59           A.CKB519;

错误的写法:

1 SELECT B.AAC002 身份证号, 2        B.AAC003 姓名, 3        TEMP_FUNC_WYL('AAC004', B.AAC004) 性别, 4        C.AAB004 单位, 5        C.AAB999 单位编号, 6        D.AAE006 地址, 7        D.AAE005 联系电话, 8        SUBSTR(A.CKC537, 1, 8) 入院时间, 9        SUBSTR(A.CKC538, 1, 8) 出院时间,10        A.CKC546 出院诊断,11        A.CKB519 就诊医院12   FROM KC21 A, AC01 B, AE01 C, SAC02 D13  WHERE A.AAC001 = B.AAC00114    AND B.AAC001 = D.AAC00115    AND B.AAB001 = C.AAB00116    AND B.BAE001 = '511502'17    AND SUBSTR(A.CKC537, 1, 4) = 201518    AND A.CKC546 LIKE '%癌%' or LIKE '%肿瘤%'19  GROUP BY B.AAC002,20           B.AAC003,21           B.AAC004,22           C.AAB004,23           C.AAB999,24           D.AAE006,25           D.AAE005,26           A.CKC537,27           A.CKC538,28           A.CKC546,29           A.CKB519

如果用这种写法,就会得到意想不到的结果。第二条统计语句的统计结果里肯定不仅仅包含2015年的情况,因为关键词 "or" 的前后是两个条件,Oracle把or前后两段当作两个完全独立的筛选条件了,or前面的是按照统计条件来统计的,而 or 后面的则 只是筛选了病种里带有“肿瘤”字样的情况。

转载于:https://www.cnblogs.com/Sunnor/p/4864164.html

你可能感兴趣的文章
Perl中命令行参数以及打开管道文件
查看>>
习题 11 提问
查看>>
2018-07-05-Python全栈开发day25-python中的继承
查看>>
MySQL 数据类型(转贴)
查看>>
Maven 常用命令
查看>>
Java注解知识点摘抄
查看>>
决战Leetcode: easy part(1-50)
查看>>
数组中出现次数超过一半的数字
查看>>
图像边缘检测
查看>>
Kill_UiAutomator
查看>>
HDU 2157 How many ways??
查看>>
Floyd最短路径
查看>>
方法重载和重写的区别
查看>>
块状元素和内联元素
查看>>
nav元素
查看>>
内存对齐
查看>>
HTML及资源是如何load的
查看>>
虚拟机apache启动
查看>>
【Linux】Centos下安装ffmpeg
查看>>
VSCode使用随笔
查看>>