# 内置函数与操作符

URL: https://caijiao.org/postgresql/advanced/functions/built-in
Source: docs/postgresql/advanced/functions/built-in.md
Description: 介绍 PostgreSQL 中常用的内置函数与操作符，帮助开发者在查询中使用各种内置工具进行数据处理和计算。

## 字符串函数

PostgreSQL 提供了多种用于字符串处理的内置函数。

### 字符串连接

使用 `||` 操作符进行字符串连接。

```sql
SELECT 'Hello' || ' ' || 'World' AS greeting;
````

### 字符串长度

`LENGTH` 函数返回字符串的字符数。

```sql
SELECT LENGTH('PostgreSQL') AS length;
```

### 转换为大写/小写

`UPPER` 和 `LOWER` 分别将字符串转换为大写或小写。

```sql
SELECT UPPER('hello') AS upper_case, LOWER('HELLO') AS lower_case;
```

### 字符串替换

`REPLACE` 函数替换字符串中的子字符串。

```sql
SELECT REPLACE('Hello, World!', 'World', 'PostgreSQL') AS new_string;
```

### 字符串查找

`POSITION` 用于查找子字符串的位置。

```sql
SELECT POSITION('SQL' IN 'PostgreSQL') AS position;
```

## 数学函数

PostgreSQL 提供了许多常用的数学函数。

### 求绝对值

`ABS` 返回数字的绝对值。

```sql
SELECT ABS(-25) AS absolute_value;
```

### 求平方根

`sqrt` 返回数字的平方根。

```sql
SELECT sqrt(25) AS square_root;
```

### 四舍五入

`ROUND` 用于对数字进行四舍五入。

```sql
SELECT ROUND(123.456, 2) AS rounded_value;
```

### 数字取整

`CEIL` 和 `FLOOR` 分别返回数字的上限和下限。

```sql
SELECT CEIL(3.14) AS ceil_value, FLOOR(3.14) AS floor_value;
```

## 日期与时间函数

PostgreSQL 提供了多种处理日期和时间的函数。

### 获取当前日期和时间

`CURRENT_DATE` 和 `CURRENT_TIMESTAMP` 返回当前的日期和时间。

```sql
SELECT CURRENT_DATE AS current_date, CURRENT_TIMESTAMP AS current_timestamp;
```

### 日期加减

`DATE` 类型的加减操作，可以增加或减少指定的时间单位。

```sql
SELECT CURRENT_DATE + INTERVAL '1 day' AS tomorrow;
SELECT CURRENT_DATE - INTERVAL '1 month' AS last_month;
```

### 获取日期部分

`EXTRACT` 提取日期的特定部分，如年、月、日等。

```sql
SELECT EXTRACT(YEAR FROM CURRENT_DATE) AS current_year;
```

## 聚合函数

PostgreSQL 内置了多种聚合函数，常用于统计数据。

### COUNT

`COUNT` 用于统计记录数。

```sql
SELECT COUNT(*) FROM employees;
```

### AVG

`AVG` 计算数值列的平均值。

```sql
SELECT AVG(salary) FROM employees;
```

### MAX / MIN

`MAX` 和 `MIN` 返回指定列的最大值和最小值。

```sql
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
```

## 操作符

PostgreSQL 提供了许多操作符用于不同类型的数据处理。

### 数值操作符

用于数值类型的常见操作符。

* `+`：加法
* `-`：减法
* `*`：乘法
* `/`：除法

```sql
SELECT salary + 1000 AS increased_salary FROM employees;
```

### 字符串操作符

* `||`：字符串连接
* `LIKE`：模糊匹配
* `ILIKE`：不区分大小写的模糊匹配

```sql
SELECT name FROM employees WHERE name LIKE 'J%';
```

### 比较操作符

常见的比较操作符：

* `=`：等于
* `<>`：不等于
* `<`、`<=`、`>`、`>=`：大于、小于、大于等于、小于等于

```sql
SELECT * FROM employees WHERE salary >= 50000;
```

### 区间操作符

* `BETWEEN`：检查某个值是否在指定范围内。
* `IN`：检查值是否属于给定的列表。

```sql
SELECT * FROM employees WHERE salary BETWEEN 40000 AND 60000;
SELECT * FROM employees WHERE department_id IN (1, 2, 3);
```

## 小结

PostgreSQL 提供了丰富的内置函数与操作符，帮助开发者进行各种数据处理任务。从字符串操作到数学计算，再到日期与时间处理，熟练使用这些函数和操作符能显著提高查询的效率和表达能力。
