Oracle兼容-函数-TRIM()/LTRIM()/RTRIM()函数


1. 语法

1. TRIM(str)
2. TRIM(LEADING [remchr] FROM str)
3. TRIM(TRAILING [remchr] FROM str)
4. TRIM(BOTH [remchr] FROM str)
5. TRIM(remchr FROM str)

7. LTRIM(str[, remstr])
8. RTRIM(str[, remstr])

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. 示例

1. greatsql> SET sql_mode = ORACLE;
2. -- "  GreatSQL  " 字符串首尾各有两个空格
3. greatsql> SELECT TRIM(LEADING '' FROM '  GreatSQL  ');
4. +--------------------------------------+
5. | TRIM(LEADING '' FROM '  GreatSQL  ') |
6. +--------------------------------------+
7. | NULL                                 |
8. +--------------------------------------+

10. greatsql> SELECT TRIM(LEADING ' ' FROM '  GreatSQL  '), LENGTH(TRIM(LEADING ' ' FROM '  GreatSQL  ')) AS LEN;
11. +---------------------------------------+------+
12. | TRIM(LEADING ' ' FROM '  GreatSQL  ') | LEN  |
13. +---------------------------------------+------+
14. | GreatSQL                              |   10 |
15. +---------------------------------------+------+

17. -- 不指定默认就是BOTH
18. greatsql> SELECT TRIM(' ' FROM '  GreatSQL  '), LENGTH(TRIM(' ' FROM '  GreatSQL  ')) AS LEN;
19. +-------------------------------+------+
20. | TRIM(' ' FROM '  GreatSQL  ') | LEN  |
21. +-------------------------------+------+
22. | GreatSQL                      |    8 |
23. +-------------------------------+------+

25. -- 指定多余一个字符,报错
26. greatsql> SELECT TRIM('ea' FROM '  GreatSQL  ');
27. ERROR 7564 (HY000): trim set should have only one character

29. -- 一个中文视为一个字符
30. greatsql> SELECT TRIM('库' FROM 'GreatSQL数据库');
31. +--------------------------------------+
32. | TRIM('库' FROM 'GreatSQL数据库')     |
33. +--------------------------------------+
34. | GreatSQL数据                         |
35. +--------------------------------------+

37. -- 一个emoji字符视为一个字符
38. greatsql> SELECT TRIM('😀' FROM 'GreatSQL数据库😀');
39. +-------------------------------------+
40. | TRIM('?' FROM 'GreatSQL数据库?')    |
41. +-------------------------------------+
42. | GreatSQL数据库                      |
43. +-------------------------------------+

45. -- LTRIM()/RTRIM()支持多个字符
46. greatsql> SELECT LTRIM('GreatSQL', 'Great');
47. +----------------------------+
48. | LTRIM('GreatSQL', 'Great') |
49. +----------------------------+
50. | SQL                        |
51. +----------------------------+

53. greatsql> SELECT RTRIM('GreatSQL', 'SQL');
54. +--------------------------+
55. | RTRIM('GreatSQL', 'SQL') |
56. +--------------------------+
57. | Great                    |
58. +--------------------------+

60. greatsql> SELECT RTRIM('  GreatSQL  '), LENGTH(RTRIM('  GreatSQL  '));
61. +-----------------------+-------------------------------+
62. | RTRIM('  GreatSQL  ') | LENGTH(RTRIM('  GreatSQL  ')) |
63. +-----------------------+-------------------------------+
64. |   GreatSQL            |                            10 |
65. +-----------------------+-------------------------------+

67. greatsql> SELECT LTRIM('  GreatSQL  '), LENGTH(LTRIM('  GreatSQL  '));
68. +-----------------------+-------------------------------+
69. | LTRIM('  GreatSQL  ') | LENGTH(LTRIM('  GreatSQL  ')) |
70. +-----------------------+-------------------------------+
71. | GreatSQL              |                            10 |
72. +-----------------------+-------------------------------+

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx