数据库常用函数

Oracle 提供了丰富的内置函数,用于执行各种数据处理操作。这些函数可以分为以下几类:字符串函数、数值函数、日期时间函数、转换函数、聚合函数等。以下是 Oracle 常用函数的总结:

### **1. 字符串函数**
- **`CONCAT(str1, str2)`**:连接两个字符串。
```sql
SELECT CONCAT('Hello', 'World') FROM dual;
```
- **`SUBSTR(string, start, length)`**:从字符串中截取指定长度的子串。
```sql
SELECT SUBSTR('HelloWorld', 1, 5) FROM dual;
```
- **`UPPER(string)`**:将字符串转换为大写。
```sql
SELECT UPPER('hello') FROM dual;
```
- **`LOWER(string)`**:将字符串转换为小写。
```sql
SELECT LOWER('HELLO') FROM dual;
```
- **`INITCAP(string)`**:将字符串中的每个单词首字母大写。
```sql
SELECT INITCAP('hello world') FROM dual;
```
- **`REPLACE(string, search, replace)`**:替换字符串中的指定内容。
```sql
SELECT REPLACE('hello world', 'world', 'Oracle') FROM dual;
```

### **2. 数值函数**
- **`ABS(number)`**:返回数值的绝对值。
```sql
SELECT ABS(-10) FROM dual;
```
- **`ROUND(number, decimal)`**:对数值进行四舍五入。
```sql
SELECT ROUND(123.456, 2) FROM dual;
```
- **`TRUNC(number, decimal)`**:对数值进行截断。
```sql
SELECT TRUNC(123.456, 2) FROM dual;
```
- **`MOD(number1, number2)`**:返回两个数相除的余数。
```sql
SELECT MOD(10, 3) FROM dual;
```

### **3. 日期时间函数**
- **`SYSDATE`**:返回当前系统日期和时间。
```sql
SELECT SYSDATE FROM dual;
```
- **`TO_CHAR(date, format)`**:将日期转换为指定格式的字符串。
```sql
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
```
- **`TO_DATE(string, format)`**:将字符串转换为日期。
```sql
SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD') FROM dual;
```
- **`ADD_MONTHS(date, months)`**:在指定日期上增加或减少月份。
```sql
SELECT ADD_MONTHS(SYSDATE, 3) FROM dual;
```
- **`MONTHS_BETWEEN(date1, date2)`**:计算两个日期之间的月数差。
```sql
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2024-01-01', 'YYYY-MM-DD')) FROM dual;
```

### **4. 转换函数**
- **`TO_CHAR(expression, format)`**:将日期或数字转换为字符串。
```sql
SELECT TO_CHAR(12345, '99,999') FROM dual;
```
- **`TO_DATE(string, format)`**:将字符串转换为日期。
```sql
SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD') FROM dual;
```
- **`TO_NUMBER(string, format)`**:将字符串转换为数字。
```sql
SELECT TO_NUMBER('12345') FROM dual;
```

### **5. 聚合函数**
- **`COUNT(column)`**:统计行数。
```sql
SELECT COUNT(*) FROM employees;
```
- **`SUM(column)`**:计算数值列的总和。
```sql
SELECT SUM(salary) FROM employees;
```
- **`AVG(column)`**:计算数值列的平均值。
```sql
SELECT AVG(salary) FROM employees;
```
- **`MAX(column)`**:返回数值列的最大值。
```sql
SELECT MAX(salary) FROM employees;
```
- **`MIN(column)`**:返回数值列的最小值。
```sql
SELECT MIN(salary) FROM employees;
```

### **6. 其他函数**
- **`NVL(expression1, expression2)`**:如果 `expression1` 为 `NULL`,则返回 `expression2`。
```sql
SELECT NVL(salary, 0) FROM employees;
```
- **`DECODE(expression, search, result, ...)`**:类似于 `CASE` 语句的简单条件判断。
```sql
SELECT DECODE(department_id, 10, 'Sales', 20, 'Marketing', 'Other') FROM employees;
```

• 十进制转二进制:TO_CHAR(num, 'FM0000000000') 

•  十进制转十六进制:TO_CHAR(num, 'XXXX') 

•  十六进制转十进制:TO_NUMBER(hex_string, 'XXXX') 

•  二进制转十进制:TO_NUMBER(bin_string, 'FM0000000000') 

•  二进制转十六进制:TO_CHAR(TO_NUMBER(bin_string, 'FM0000000000'), 'XXXX') 

•  十六进制转二进制:TO_CHAR(TO_NUMBER(hex_string, 'XXXX'), 'FM0000000000')

posted @ 2025-04-18 00:52  沧海一粟95  阅读(19)  评论(0)    收藏  举报