oracle使用all关键字过滤,Oracle select 关键字 all_some_any

  • Post author:
  • Post category:其他


any检查条件左边的表达式是否存在于条件右边的任何行中

some 和any进行一样的比较,some是为了区分关键字any和英文中的any,现在any仍然是关键字其和some的功能一样。

all检查条件左边的表达式对于条件右边的结果组中的所有行是否是正确的。

使用的语法相同 expression relational_operator(、=等条件) ALL|SOME|ANY sub-query| expression

例:SELECT * FROM SCOTT.EMP WHERE JOB !=’SALESMAN’ AND SAL>(SELECT (SAL+COMM) FROM SCOTT.EMP WHERE JOB=’SALESMAN’)

会返回一个错误说“一个单行查询返回多个结果”

SELECT * FROM SCOTT.EMP WHERE JOB !=’SALESMAN’ AND SAL>ANY(SELECT (SAL+COMM) FROM SCOTT.EMP WHERE JOB=’SALESMAN’)

这个sql的意思就是查询出非销售人员的工资大于销售人员工资加提成的人员

的结果是

1 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30

2 7566 JONES MANAGER 7839 1981-4-2 2975.00  20

3 7698 BLAKE MANAGER 7839 1981-5-1 2850.00  30

4 7782 CLARK MANAGER 7839 1981-6-9 2450.00  10

5 7788 SCOTT ANALYST 7566 1987-4-19 3000.00  20

6 7839 KING PRESIDENT 1981-11-17 5000.00  10

7 7902 FORD ANALYST 7566 1981-12-3 3000.00  20

也就是说any,some,all 可以用来和一个结果集来对比。

SELECT * FROM SCOTT.EMP WHERE JOB !=’SALESMAN’ AND SAL>all(SELECT (SAL+COMM) FROM SCOTT.EMP WHERE JOB=’SALESMAN’ )

这个sql的意思是确定比销售人员工资高的员工也就是说他的工资要大于所有的销售人员,而any是大于任何一个销售人员

结果是

1 7566 JONES MANAGER 7839 1981-4-2 2975.00  20

2 7698 BLAKE MANAGER 7839 1981-5-1 2850.00  30

3 7788 SCOTT ANALYST 7566 1987-4-19 3000.00  20

4 7839 KING PRESIDENT 1981-11-17 5000.00  10

5 7902 FORD ANALYST 7566 1981-12-3 3000.00  20

1.parseCnMoney(cnMoney) 将中文大写钱数转换为小写 字符串 cnMoney:中文大写钱数。如:parseCnMoney(“壹万两仟叁佰陆拾伍元叁角伍分”),返回值为12365.35。2.toCnMoney(money) 将钱数转换为中文大写 字符串 money:小写钱数。如:toCnMoney(12365.35),返回值为壹万两仟叁佰陆拾伍元叁角伍分