REVERSE
描述
REVERSE 函数用于将输入序列的顺序颠倒。对于字符串参数,返回字符顺序颠倒的字符串;对于数组参数,返回元素顺序颠倒的数组。该函数按字符进行反转,能够正确处理 UTF-8 多字节字符。
语法
REVERSE(<seq>)
参数
| 参数 | 说明 |
|---|---|
<seq> | 需要反转顺序的字符串或数组。类型:VARCHAR 或 ARRAY |
返回值
返回与输入类型相同的反转后序列:
- 字符串输入:返回 VARCHAR 类型,字符顺序颠倒的字符串
- 数组输入:返回 ARRAY 类型,元素顺序颠倒的数组
特殊情况:
- 如果参数为 NULL,返回 NULL
- 如果字符串为空,返回空字符串
- 如果数组为空,返回空数组
- 单字符字符串反转后仍为原字符串
示例
- 基本字符串反转
SELECT REVERSE('hello');
+------------------+
| REVERSE('hello') |
+------------------+
| olleh |
+------------------+
- 数组元素反转
SELECT REVERSE(['hello', 'world']);
+-----------------------------+
| REVERSE(['hello', 'world']) |
+-----------------------------+
| ["world", "hello"] |
+-----------------------------+
- NULL 值处理
SELECT REVERSE(NULL);
+---------------+
| REVERSE(NULL) |
+---------------+
| NULL |
+---------------+
- 空字符串和空数组
SELECT REVERSE(''), REVERSE([]);
+-------------+-------------+
| REVERSE('') | REVERSE([]) |
+-------------+-------------+
| | [] |
+-------------+-------------+
- 单字符和单元素
SELECT REVERSE('A'), REVERSE(['single']);
+--------------+--------------------+
| REVERSE('A') | REVERSE(['single']) |
+--------------+--------------------+
| A | ["single"] |
+--------------+--------------------+
- 数字和特殊字符
SELECT REVERSE('12345'), REVERSE('!@#$%');
+------------------+------------------+
| REVERSE('12345') | REVERSE('!@#$%') |
+------------------+------------------+
| 54321 | %$#@! |
+------------------+------------------+
- UTF-8 多字节字符
SELECT REVERSE('ṭṛì ḍḍumai'), REVERSE('ḍḍumannàri');
+-----------------------+------------------------+
| REVERSE('ṭṛì ḍḍumai') | REVERSE('ḍḍumannàri') |
+-----------------------+------------------------+
| iamuḍḍ ìṛṭ | irànnaumuḍḍ |
+-----------------------+------------------------+
- 混合字符类型
SELECT REVERSE('Hello123'), REVERSE('test@email.com');
+---------------------+--------------------------+
| REVERSE('Hello123') | REVERSE('test@email.com') |
+---------------------+--------------------------+
| 321olleH | moc.liame@tset |
+---------------------+--------------------------+
- 多元素数组
SELECT REVERSE([1, 2, 3, 4, 5]), REVERSE(['a', 'b', 'c']);
+---------------------------+------------------------+
| REVERSE([1, 2, 3, 4, 5]) | REVERSE(['a', 'b', 'c']) |
+---------------------------+------------------------+
| [5, 4, 3, 2, 1] | ["c", "b", "a"] |
+---------------------------+------------------------+
- 回文测试
SELECT REVERSE('level'), REVERSE('12321');
+------------------+-------------------+
| REVERSE('level') | REVERSE('12321') |
+------------------+-------------------+
| level | 12321 |
+------------------+-------------------+