- 类别:
:doc:`/sql-reference/functions-string`(匹配/比较)
RIGHT¶
返回其输入中最右侧的子字符串。
RIGHT(STR, N) 等同于 SUBSTR(STR, LENGTH(STR)-N+1, N)。
- 另请参阅:
语法¶
实参¶
string_expr计算结果为 VARCHAR 或 BINARY 值。
length_expr计算结果为整数的表达式。它指定:
如果输入为 VARCHAR 值,返回的 UTF-8 字符数。
如果输入为 BINARY 值,返回的字节数。
指定一个大于或等于零的长度。如果长度为负数,该函数将返回空字符串。
返回¶
返回值的数据类型与 :samp:`{string_expr}`(VARCHAR 或 BINARY)的数据类型相同。
如果任何输入为 NULL,则返回 NULL。
使用说明¶
如果 length_expr 的长度大于 expr,则该函数返回 expr。
排序规则详细信息¶
排序规则适用于 VARCHAR 输入。如果第一个参数的输入数据类型为 BINARY,则排序规则不适用。
No impact. 尽管在语法上可以接受排序规则,但排序规则对处理没有影响。例如,某些语言的字母包含两个字符或三个字符(如匈牙利语中的“dzs”,捷克语中的“ch”),这些字母作为长度实参时仍会算作两个或三个字符(而不是一个字符)。
The collation of the result is the same as the collation of the input. 如果返回值作为嵌套函数调用的一部分传递给另一个函数,这可能很有用。
示例¶
以下示例使用 RIGHT 函数。
基本示例¶
返回电子邮件地址、电话和日期字符串的子字符串¶
以下示例返回表中客户信息的子字符串。
创建表并插入数据:
将 LENGTH 和 POSITION 函数与 RIGHT 函数结合使用,以便从电子邮件地址中提取域名。此示例首先找到输入字符串的长度,然后减去每个字符串中 @ 的位置,以确定域名的长度:
小技巧
您可以使用 POSITION 函数查找其他字符的位置,例如空字符 (' ') 或下划线 (_)。
在表的 cust_phone 列中,区号始终是前三个字符。提取不带区号的电话号码:
在表的 activation_date 列中,日期格式始终为 YYYYMMDD。从这些字符串中提取日期: