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)
  6. LTRIM(str[, remstr])
  7. 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. +--------------------------------------+
  9. greatsql> SELECT TRIM(LEADING ' ' FROM ' GreatSQL '), LENGTH(TRIM(LEADING ' ' FROM ' GreatSQL ')) AS LEN;
  10. +---------------------------------------+------+
  11. | TRIM(LEADING ' ' FROM ' GreatSQL ') | LEN |
  12. +---------------------------------------+------+
  13. | GreatSQL | 10 |
  14. +---------------------------------------+------+
  15. -- 不指定默认就是BOTH
  16. greatsql> SELECT TRIM(' ' FROM ' GreatSQL '), LENGTH(TRIM(' ' FROM ' GreatSQL ')) AS LEN;
  17. +-------------------------------+------+
  18. | TRIM(' ' FROM ' GreatSQL ') | LEN |
  19. +-------------------------------+------+
  20. | GreatSQL | 8 |
  21. +-------------------------------+------+
  22. -- 指定多余一个字符,报错
  23. greatsql> SELECT TRIM('ea' FROM ' GreatSQL ');
  24. ERROR 7564 (HY000): trim set should have only one character
  25. -- 一个中文视为一个字符
  26. greatsql> SELECT TRIM('库' FROM 'GreatSQL数据库');
  27. +--------------------------------------+
  28. | TRIM('库' FROM 'GreatSQL数据库') |
  29. +--------------------------------------+
  30. | GreatSQL数据 |
  31. +--------------------------------------+
  32. -- 一个emoji字符视为一个字符
  33. greatsql> SELECT TRIM('😀' FROM 'GreatSQL数据库😀');
  34. +-------------------------------------+
  35. | TRIM('?' FROM 'GreatSQL数据库?') |
  36. +-------------------------------------+
  37. | GreatSQL数据库 |
  38. +-------------------------------------+
  39. -- LTRIM()/RTRIM()支持多个字符
  40. greatsql> SELECT LTRIM('GreatSQL', 'Great');
  41. +----------------------------+
  42. | LTRIM('GreatSQL', 'Great') |
  43. +----------------------------+
  44. | SQL |
  45. +----------------------------+
  46. greatsql> SELECT RTRIM('GreatSQL', 'SQL');
  47. +--------------------------+
  48. | RTRIM('GreatSQL', 'SQL') |
  49. +--------------------------+
  50. | Great |
  51. +--------------------------+
  52. greatsql> SELECT RTRIM(' GreatSQL '), LENGTH(RTRIM(' GreatSQL '));
  53. +-----------------------+-------------------------------+
  54. | RTRIM(' GreatSQL ') | LENGTH(RTRIM(' GreatSQL ')) |
  55. +-----------------------+-------------------------------+
  56. | GreatSQL | 10 |
  57. +-----------------------+-------------------------------+
  58. greatsql> SELECT LTRIM(' GreatSQL '), LENGTH(LTRIM(' GreatSQL '));
  59. +-----------------------+-------------------------------+
  60. | LTRIM(' GreatSQL ') | LENGTH(LTRIM(' GreatSQL ')) |
  61. +-----------------------+-------------------------------+
  62. | GreatSQL | 10 |
  63. +-----------------------+-------------------------------+

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx