MySQL RIGHT() 函数
MySQL RIGHT() 函数接受一个字符串值和一个数值(例如 N)作为参数,并从右到左返回最多 N 个字符的指定字符串。
此函数在各种场景中都很有用,例如从字符串的右端提取文件扩展名、区号或任何其他文本字符串。
语法
以下是 MySQL RIGHT() 函数的语法 -
RIGHT(str, length)
参数
此函数接受一个字符串值和指定数量的字符作为参数。
返回值
此函数返回指定长度的字符串最右边的部分。
示例
在以下示例中,该函数从字符串"TUTORIALSPOINT"中提取最后 5 个字符 -
SELECT RIGHT('Tutorialspoint', 5);
以下是上述代码的输出 -
| RIGHT('Tutorialspoint', 5) |
|---|
| POINT |
示例
如果指定的字符数大于字符串的长度,则函数将返回整个字符串,不做任何更改 -
SELECT RIGHT('Hello', 10);
输出结果如下 -
| RIGHT('Hello', 10) |
|---|
| Hello |
示例
如果传递给函数的任何参数为 NULL,则返回 NULL -
SELECT RIGHT(NULL, 5);
输出结果如下 -
| RIGHT(NULL, 5) |
|---|
| 0x |
示例
您也可以将数值作为参数传递给此函数 -
SELECT RIGHT(763275825171, 6);
我们得到如下输出 -
| RIGHT(763275825171, 6) |
|---|
| 825171 |
示例
您也可以使用变量存储字符串,然后调用 RIGHT() 函数 -
SET @str = '05/20/2023'; SELECT RIGHT(@str, 4) AS 'year';
我们得到如下输出 -
| year |
|---|
| 2023 |
示例
您还可以将表的列名作为参数传递给此函数,并在其中打印所需的字符。
让我们创建一个名为"EMP"的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示 -
CREATE TABLE EMP( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, INCOME FLOAT );
现在,让我们使用 INSERT 语句将记录插入其中 -
INSERT INTO EMP VALUES
('Krishna', 'Sharma', 19, 2000),
('Raj', 'Kandukuri', 20, 7000),
('Ramya', 'Ramapriya', 25, 5000),
('Mac', 'Mohan', 26, 2000);
获得的EMP如下-
| FIRST_NAME | LAST_NAME | AGE | INCOME |
|---|---|---|---|
| Krishna | Sharma | 19 | 2000 |
| Raj | Kandukuri | 20 | 7000 |
| Ramya | Ramapriya | 25 | 5000 |
| Mac | Mohan | 26 | 2000 |
以下查询使用 RIGHT() 函数检索"FIRST_NAME"列中的最后 3 个字符 -
SELECT FIRST_NAME, LAST_NAME, AGE, RIGHT(FIRST_NAME, 3) as Result FROM EMP;
输出
执行上述代码后,我们得到以下输出 -
| FIRST_NAME | LAST_NAME | AGE | Result |
|---|---|---|---|
| Krishna | Sharma | 19 | hna |
| Raj | Kandukuri | 20 | Raj |
| Ramya | Ramapriya | 25 | mya |
| Mac | Mohan | 26 | Mac |
示例
假设我们使用以下查询创建了另一个名为 PERSONS 的表 -
CREATE TABLE PERSONS( ID INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(100) NOT NULL, AGE VARCHAR(20) NOT NULL );
在这里,我们使用 INSERT INTO 语句将记录插入到上面创建的表中,如下所示 -
INSERT INTO PERSONS(NAME, AGE) VALUES
('Navjot singh', 32),
('Virat kohli', 23),
('Ramandeep kaur', 53),
('Deepak chahar', 78),
('Harry brook', 27);
获取的PERSONS如下-
| ID | NAME | AGE |
|---|---|---|
| 1 | Navjot singh | 32 |
| 2 | Virat kohli | 23 |
| 3 | Ramandeep kaur | 53 |
| 4 | Deepak chahar | 78 |
| 5 | Harry brook | 27 |
在以下查询中,我们从 PERSONS 表中获取每个人的姓氏。为此,方法如下 -
- 首先,我们使用 INSTR() 函数查找姓名中空格(" ")的位置。
- 其次,我们使用 LENGTH() 函数查找姓名的长度。此处,RIGHT 函数的长度等于人名长度减去空格(" ")的位置。
- 此外,我们还使用 RIGHT() 函数提取人员的姓氏,即空格(" ")后的字符。
SELECT NAME, RIGHT(NAME, LENGTH(NAME) - INSTR(NAME, ' ')) AS 'Lastname' FROM PERSONS;
输出
执行上述代码后,我们得到以下输出 -
| NAME | Lastname |
|---|---|
| Navjot singh | singh |
| Virat kohli | kohli |
| Ramandeep kaur | kaur |
| Deepak chahar | chahar |
| Harry brook | brook |
mysql-right-function.html