MySQL常用函数

COALESCE 函数

在 SQL 中,`COALESCE` 函数用于返回参数列表中第一个非空表达式的值。如果所有参数都为 NULL,则 `COALESCE` 返回 NULL。这个函数在处理可能含有 NULL 值的情况下非常有用,可以确保在结果中始终有一个非空值。

`COALESCE` 函数的语法如下:

```sql

COALESCE(expression1, expression2, expression3, ...)

```

- `expression1, expression2, expression3, ...`:要检查的表达式列表。

`COALESCE` 函数会逐个检查参数,返回第一个非 NULL 的参数值。如果所有参数都为 NULL,则返回 NULL。

**示例**:

假设有一个表 `students` 包含学生的姓名和出生日期,但有些学生的出生日期字段可能为 NULL。我们可以使用 `COALESCE` 函数来选择非空的出生日期或提供一个默认值。

```sql

SELECT name, COALESCE(birthdate, 'Unknown') AS birthdate

FROM students;

```

在这个示例中,如果 `birthdate` 字段为 NULL,`COALESCE` 函数会返回 'Unknown',否则会返回实际的出生日期值。

总之,`COALESCE` 函数是一个非常有用的函数,可以简化 SQL 查询中处理 NULL 值的逻辑,确保结果中不会出现 NULL 值,而是提供一个备用值。

TRIM函数

TRIM函数通常用于去除字符串的开头和结尾的空格或其他指定字符。在不同的数据库系统中,TRIM函数的语法可能略有不同,以下是一些常见数据库系统中TRIM函数的用法示例:

### 1. MySQL

在MySQL中,TRIM函数的语法如下:

```sql

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM ] str)

```

- `BOTH`: 去除开头和结尾的指定字符。

- `LEADING`: 去除开头的指定字符。

- `TRAILING`: 去除结尾的指定字符。

- `remstr`: 要去除的字符,默认是空格。

- `str`: 要处理的字符串。

示例:

```sql

SELECT TRIM('   Hello   '); -- 返回 'Hello'

SELECT TRIM(LEADING '0' FROM '000123'); -- 返回 '123'

```

SUBSTRING_INDEX函数

`SUBSTRING_INDEX`函数通常用于在指定分隔符的情况下从字符串中提取子字符串。这个函数在不同的数据库系统中可能有一些差异,以下是一些常见数据库系统中`SUBSTRING_INDEX`函数的用法示例:

### 1. MySQL

在MySQL中,`SUBSTRING_INDEX`函数的语法如下:

```sql

SUBSTRING_INDEX(str, delim, count)

```

- `str`: 要处理的字符串。

- `delim`: 分隔符。

- `count`: 指定提取的子字符串在分隔符出现的次数。正数表示从左往右数的次数,负数表示从右往左数的次数。

示例:

```sql

SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -- 返回 'www.mysql'

SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -- 返回 'mysql.com'

```

FIND_IN_SET函数

`FIND_IN_SET`函数是MySQL中用于在逗号分隔的字符串列表中查找某个值的函数。该函数的语法如下:

```sql

FIND_IN_SET(search_str, str_list)

```

- `search_str`: 要查找的字符串。

- `str_list`: 逗号分隔的字符串列表。

`FIND_IN_SET`函数返回在逗号分隔的字符串列表中找到要查找的字符串的位置。如果找到,返回其位置(从1开始),如果未找到,则返回0。

示例:

```sql

SELECT FIND_IN_SET('apple', 'apple,banana,orange'); -- 返回 1

SELECT FIND_IN_SET('banana', 'apple,banana,orange'); -- 返回 2

SELECT FIND_IN_SET('grape', 'apple,banana,orange'); -- 返回 0

```

请注意,`FIND_IN_SET`函数在进行匹配时是区分大小写的,因此搜索的字符串应该与列表中的字符串大小写完全匹配。如果需要忽略大小写,可以在比较之前使用`LOWER`或`UPPER`函数将字符串转换为统一的大小写。

NULLIF函数

`NULLIF`函数是用于比较两个表达式是否相等的函数。如果这两个表达式相等,则`NULLIF`函数返回`NULL`,否则返回第一个表达式的值。`NULLIF`函数的语法如下:

```sql

NULLIF(expr1, expr2)

```

- `expr1`和`expr2`是要比较的两个表达式。

如果`expr1`等于`expr2`,则返回`NULL`;否则返回`expr1`的值。

示例:

```sql

SELECT NULLIF(5, 5); -- 返回 NULL,因为5等于5

SELECT NULLIF(10, 5); -- 返回 10,因为10不等于5

SELECT NULLIF('apple', 'apple'); -- 返回 NULL,因为'apple'等于'apple'

SELECT NULLIF('apple', 'orange'); -- 返回 'apple',因为'apple'不等于'orange'

```

`NULLIF`函数通常用于在需要返回`NULL`值而不是特定值时使用,例如在处理特定条件下应返回`NULL`的情况。

FROM_UNIXTIME函数

`FROM_UNIXTIME`函数是MySQL中用于将 UNIX 时间戳转换为日期时间格式的函数。UNIX 时间戳是从 1970 年 1 月 1 日 00:00:00 UTC 到特定时间的秒数。

`FROM_UNIXTIME`函数的语法如下:

```sql

FROM_UNIXTIME(unix_timestamp, [format])

```

- `unix_timestamp` 是一个整数,表示 UNIX 时间戳。

- `format` 是可选参数,用于指定返回日期时间的格式。如果省略该参数,则返回默认格式。

示例:

```sql

SELECT FROM_UNIXTIME(1615827600); -- 返回 '2021-03-15 12:00:00'

SELECT FROM_UNIXTIME(1615827600, '%Y-%m-%d %H:%i:%s'); -- 返回 '2021-03-15 12:03:20'

```

在上面的示例中,第一个查询将 UNIX 时间戳 `1615827600` 转换为默认的日期时间格式,而第二个查询将其转换为指定格式的日期时间。

使用 `FROM_UNIXTIME` 函数可以方便地将 UNIX 时间戳转换为人类可读的日期时间格式,便于理解和处理时间数据。

STR_TO_DATE函数

`STR_TO_DATE` 函数是 MySQL 中用于将字符串转换为日期的函数。它的语法如下:

```sql

STR_TO_DATE(str, format)

```

- `str` 是要转换为日期的字符串。

- `format` 是日期格式,用于指定输入字符串的日期格式。

示例:

```sql

SELECT STR_TO_DATE('2024-03-15', '%Y-%m-%d'); -- 将字符串 '2024-03-15' 转换为日期格式

```

在上面的示例中,`STR_TO_DATE` 函数将字符串 `'2024-03-15'` 按照指定的格式 `'%Y-%m-%d'` 转换为日期格式。

使用 `STR_TO_DATE` 函数可以将符合特定格式的字符串转换为日期,这在处理需要将字符串日期转换为日期类型的情况下非常有用。确保在使用 `STR_TO_DATE` 函数时,提供正确的日期格式以确保准确的转换。

CAST函数

`CAST` 函数用于将一个数据类型转换为另一个数据类型。在 MySQL 中,`CAST` 函数的语法如下:

```sql

CAST(expression AS data_type)

```

- `expression` 是要转换的表达式或值。

- `data_type` 是要将表达式转换为的目标数据类型。

示例:

```sql

SELECT CAST('42' AS UNSIGNED); -- 将字符串 '42' 转换为无符号整数

```

在这个示例中,`CAST` 函数将字符串 `'42'` 转换为无符号整数类型。

`CAST` 函数在需要将一个数据类型转换为另一个数据类型时非常有用,可以在查询中使用它来确保数据类型的兼容性和准确性。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的宝藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值