§ Oracle兼容-函数-TRIM()/LTRIM()/RTRIM()函数
§ 1. 语法
TRIM(str)
TRIM(LEADING [remchr] FROM str)
TRIM(TRAILING [remchr] FROM str)
TRIM(BOTH [remchr] FROM str)
TRIM(remchr FROM str)
LTRIM(str[, remstr])
RTRIM(str[, remstr])
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
§ 2. 定义和用法
因为GreatSQL已原生支持 TRIM()/LTRIM()/RTRIM()
函数,因此想要在GreatSQL中使用扩展后的函数时,需要先执行 SET sql_mode = ORACLE;
激活Oracle兼容模式。
在Oracle兼容模式下,各个函数的作用分别如下:
TRIM()
函数的作用是从字符串str
中删除指定的字符remchr
,未声明remchr
时则默认删除空格。LTRIM()
函数的作用是从字符串str
的最左侧起,删除指定的字符串remstr
,未声明remstr
时则默认删除空格。RTRIM()
函数的作用是从字符串str
的最右侧起,删除指定的字符串remstr
,未声明remstr
时则默认删除空格。
各参数说明如下:
remchr
:要删除的字符,在Oracle兼容模式下,TRIM()
函数只能指定删除一个字符(不是一串字符串),默认为空格(注意:空格不是空值)。当参数remchr
为空值('')时,结果总是返回NULL。特别说明:是中文、emoji等虽然是多字节字符,但在TRIM()
函数中,仍被视为一个字符。remstr
:要删除的字符串,用于LTRIM()/RTRIM()
函数。LEADING
:从头部开始,删除到第一个不是remchr
的位置。TRAILING
:从尾部开始,删除到第一个不是remchr
的位置。BOTH
:开头和结尾都算,都不指定时默认启用。
§ 3. 示例
greatsql> SET sql_mode = ORACLE;
-- " GreatSQL " 字符串首尾各有两个空格
greatsql> SELECT TRIM(LEADING '' FROM ' GreatSQL ');
+--------------------------------------+
| TRIM(LEADING '' FROM ' GreatSQL ') |
+--------------------------------------+
| NULL |
+--------------------------------------+
greatsql> SELECT TRIM(LEADING ' ' FROM ' GreatSQL '), LENGTH(TRIM(LEADING ' ' FROM ' GreatSQL ')) AS LEN;
+---------------------------------------+------+
| TRIM(LEADING ' ' FROM ' GreatSQL ') | LEN |
+---------------------------------------+------+
| GreatSQL | 10 |
+---------------------------------------+------+
-- 不指定默认就是BOTH
greatsql> SELECT TRIM(' ' FROM ' GreatSQL '), LENGTH(TRIM(' ' FROM ' GreatSQL ')) AS LEN;
+-------------------------------+------+
| TRIM(' ' FROM ' GreatSQL ') | LEN |
+-------------------------------+------+
| GreatSQL | 8 |
+-------------------------------+------+
-- 指定多余一个字符,报错
greatsql> SELECT TRIM('ea' FROM ' GreatSQL ');
ERROR 7564 (HY000): trim set should have only one character
-- 一个中文视为一个字符
greatsql> SELECT TRIM('库' FROM 'GreatSQL数据库');
+--------------------------------------+
| TRIM('库' FROM 'GreatSQL数据库') |
+--------------------------------------+
| GreatSQL数据 |
+--------------------------------------+
-- 一个emoji字符视为一个字符
greatsql> SELECT TRIM('😀' FROM 'GreatSQL数据库😀');
+-------------------------------------+
| TRIM('?' FROM 'GreatSQL数据库?') |
+-------------------------------------+
| GreatSQL数据库 |
+-------------------------------------+
-- LTRIM()/RTRIM()支持多个字符
greatsql> SELECT LTRIM('GreatSQL', 'Great');
+----------------------------+
| LTRIM('GreatSQL', 'Great') |
+----------------------------+
| SQL |
+----------------------------+
greatsql> SELECT RTRIM('GreatSQL', 'SQL');
+--------------------------+
| RTRIM('GreatSQL', 'SQL') |
+--------------------------+
| Great |
+--------------------------+
greatsql> SELECT RTRIM(' GreatSQL '), LENGTH(RTRIM(' GreatSQL '));
+-----------------------+-------------------------------+
| RTRIM(' GreatSQL ') | LENGTH(RTRIM(' GreatSQL ')) |
+-----------------------+-------------------------------+
| GreatSQL | 10 |
+-----------------------+-------------------------------+
greatsql> SELECT LTRIM(' GreatSQL '), LENGTH(LTRIM(' GreatSQL '));
+-----------------------+-------------------------------+
| LTRIM(' GreatSQL ') | LENGTH(LTRIM(' GreatSQL ')) |
+-----------------------+-------------------------------+
| GreatSQL | 10 |
+-----------------------+-------------------------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
扫码关注微信公众号