字符串函数列表
比日期和时间更多的功能——只有 String 类型。SQL 中的哪个由 CHAR(n) 和 VARCHAR(n) 类型给出。让我们回顾一下其中最受欢迎的:
功能 | 描述 | |
---|---|---|
1个 | 长度(str) | 以字节为单位返回传递的字符串的长度 |
2个 | CHAR_LENGTH(str) | 以字符形式返回传递的字符串的长度 |
3个 | 定位(substr,str), | 在类似于 indexOf() 方法的字符串中搜索子字符串 |
4个 | 定位(substr,str,pos) | 从 pos 开始搜索字符串中的子字符串 |
5个 | CONCAT(str1,str2,...) | 连接多行 |
6个 | SUBSTR(), SUBSTRING() | 返回由一系列字符给出的子字符串 |
7 | 降低(str) | 将字符串转换为小写 |
8个 | 上(str) | 将字符串转换为大写 |
9 | 代替() | 替换字符串中的子字符串 |
10 | 匹配() | 检查字符串是否匹配给定的模式 |
十一 | 修剪(海峡) | 修剪字符串开头和结尾的空字符 |
12 | LTRIM(海峡) | 修剪字符串开头的空字符 |
13 | RTRIM(海峡) | 修剪字符串末尾的空字符 |
14 | TO_BASE64(str) | 将字符串转换为 Base64 |
15 | FROM_BASE64(str) | 从 Base64 转换字符串 |
我特意将功能分成小组,以便更容易理解如何使用它们。下面我们将考虑每组中的一个函数。您可以在官方文档中找到处理字符串的完整函数列表。
让我们转换字符串
让我们首先处理最简单的函数,这些函数只是将字符串转换为稍微不同的形式。例如,将字符串转换为大写和小写。通常,它们的行为类似于 Java 语言中的相同函数。
所以我只给出一个表格和几个例子。
# | 要求 | 结果 |
---|---|---|
1个 | 选择长度('文本') | 4个 |
2个 | 选择长度('你好') | 12 |
3个 | 选择较低的('你好') | 你好 |
4个 | 选择上层('你好') | 你好 |
5个 | 选择SUBSTR ('你好', 2, 3) | 里夫 |
6个 | SELECT SUBSTR('嗨,你好吗?',8) | 你好吗? |
这些函数按预期工作,就像它们在 JDK 中的对应函数一样。
唯一需要注意的是:在第一行中,结果是 4,而不是 8。问题是请求中使用了 1 个字节(ASCII 编码)来对拉丁字符进行编码。但如果您使用数据库中的数据,则字符串的长度将取决于数据库编码设置。使用数据库时你会发现很多惊喜:)
字符串的复杂操作
好吧,让我们看看使用字符串时更复杂的事情。你会想出什么...
让我们从任务表中显示任务,如果任务截止日期已经过去,则在任务描述中添加 EXPIRED 一词!
听起来不错。虽然我们还没有了解复杂的条件,但让我们稍微简化一下任务。让我们编写一个显示过去任务列表的查询,但一定要在标题中添加单词“EXPIRED!” 。.
为此,我们必须使用 CONCAT 函数:
SELECT CONCAT( 'EXPIRED! ', name) FROM task
WHERE deadline < CURDATE()
此查询的结果将是:
连接('过期!',名称) |
---|
已到期!修复一个前端bug |
推荐。如果您只需要将数据转换为稍微不同的形式,那么这也可以在 Java 代码级别完成。但是如果你想使用 SQL 服务器端的字符串函数(在 WHERE 内部),那么你肯定离不开它们。
GO TO FULL VERSION