Oracle中decode函数与case when的使用
DECODE()函数,它将输入数与函数中的参数列表相比较,根据输入返回一个对应。函数的参数列表是由若干数及其对应结果组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回。 区别于SQL的其它函数,DECODE函数还能识别和操作
DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。
区别于SQL的其它函数,DECODE函数还能识别和操作空值。
语法:DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
语法解读:control _value试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。
value1是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果值将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result1 是一组成序偶的结果值。
default_result 未能与任何一个值匹配时,函数返回的默认值。
例1:select decode(sign(to_number(to_char(sysdate,'MM'))-6),1,'下半年',-1,'上半年',0,'六月') as MM from dual;
sign()函数根据表达式的值是0、正数还是负数,分别返回0、1、-1;
dual是oracle的虚拟表,比如select sysdate from dual 查询系统当前时间;
此sql根据数据库查询出系统当前时间,取时间的月份,先转换成char型,再将char转换为number型,
当月份减6大于0时,显示下半年,小于0时显示上关年,等于0 时显示六月。
例2:一个员工表,employees和一个部门表,departments;
员工表有员工编号employee_id,员工姓名employee_name,员工工资salary和部门编码department_id;
部门表有部门编号department_id,部门名称department_name;
部题描述:查出各部门的员工工资大于3000和小等于3000的人数。
sql语句:
select d.department_id, sum(decode(sign(e.salary - 3000),1,1,-1,0)) maxSal, sum(decode(sign(3000 - e.salary),1,1,-1,0)) minSal from employees e, departments d where e.department_id = d.department_id group by d.department_id;
SQL解析:因为当工资小于等于3000时,都返回0,所以用-1代替小于和等于(即0和-1)的情况。
另一解决方法(用case when....then....end):
select d.department_id, sum(case when e.salary - 3000 > 0 then 1 else 0 end ) maxSal , sum(case when 3000 - e.salary > 0 then 1 else 0 end ) minSal from employees e, departments d where e.department_id = d.department_id group by d.department_id;
case when 有多个条件时,用case when .... then .... when ... then .......end
select m.guid as ID, case when m.superitemid is null then '-1' when m.superitemid = '0' then '-1' else m.superitemid end as PID, m.code || '-' || m.name as TEXT, m.code, m.name from T_PUBMOFDEP m

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



To query the Oracle tablespace size, follow the following steps: Determine the tablespace name by running the query: SELECT tablespace_name FROM dba_tablespaces; Query the tablespace size by running the query: SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

Oracle View Encryption allows you to encrypt data in the view, thereby enhancing the security of sensitive information. The steps include: 1) creating the master encryption key (MEk); 2) creating an encrypted view, specifying the view and MEk to be encrypted; 3) authorizing users to access the encrypted view. How encrypted views work: When a user querys for an encrypted view, Oracle uses MEk to decrypt data, ensuring that only authorized users can access readable data.

Creating an Oracle table involves the following steps: Use the CREATE TABLE syntax to specify table names, column names, data types, constraints, and default values. The table name should be concise and descriptive, and should not exceed 30 characters. The column name should be descriptive, and the data type specifies the data type stored in the column. The NOT NULL constraint ensures that null values are not allowed in the column, and the DEFAULT clause specifies the default values for the column. PRIMARY KEY Constraints to identify the unique record of the table. FOREIGN KEY constraint specifies that the column in the table refers to the primary key in another table. See the creation of the sample table students, which contains primary keys, unique constraints, and default values.

Data import method: 1. Use the SQLLoader utility: prepare data files, create control files, and run SQLLoader; 2. Use the IMP/EXP tool: export data, import data. Tip: 1. Recommended SQL*Loader for big data sets; 2. The target table should exist and the column definition matches; 3. After importing, data integrity needs to be verified.

There are three ways to view instance names in Oracle: use the "sqlplus" and "select instance_name from v$instance;" commands on the command line. Use the "show instance_name;" command in SQL*Plus. Check environment variables (ORACLE_SID on Linux) through the operating system's Task Manager, Oracle Enterprise Manager, or through the operating system.

Uninstall method for Oracle installation failure: Close Oracle service, delete Oracle program files and registry keys, uninstall Oracle environment variables, and restart the computer. If the uninstall fails, you can uninstall manually using the Oracle Universal Uninstall Tool.

There are the following methods to get time in Oracle: CURRENT_TIMESTAMP: Returns the current system time, accurate to seconds. SYSTIMESTAMP: More accurate than CURRENT_TIMESTAMP, to nanoseconds. SYSDATE: Returns the current system date, excluding the time part. TO_CHAR(SYSDATE, 'YYY-MM-DD HH24:MI:SS'): Converts the current system date and time to a specific format. EXTRACT: Extracts a specific part from a time value, such as a year, month, or hour.

An AWR report is a report that displays database performance and activity snapshots. The interpretation steps include: identifying the date and time of the activity snapshot. View an overview of activities and resource consumption. Analyze session activities to find session types, resource consumption, and waiting events. Find potential performance bottlenecks such as slow SQL statements, resource contention, and I/O issues. View waiting events, identify and resolve them for performance. Analyze latch and memory usage patterns to identify memory issues that are causing performance issues.
