Oracle兼容-函数-SUBSTR()函数


1. 语法

  1. SUBSTR(string, pos [, substring_length] )

2. 定义和用法

函数 SUBSTR() 的作用是返回字符型参数 string 的一部分。该部分是由 string 的第 pos 个字符开始,取 substring_length 个字符。

  • pos为0,视为1,表示string从第1个字符开始。
  • pos为正数,表示由string的第pos个字符开始。
  • pos为负数,表示由string倒数第pos个字符开始。
  • pos为’’(空)时,在Oracle模式下,当做1看待。
  • substring_length未指定,表示取到string的最后一个字符为止。
  • substring_length小于等于0,会传回空字符。
  • stringpossubstring_length任意一个值为NULL,则返回NULL。
  • string中包含转义字符(例如:\0‘’\\b\B\n\N\r\R\t\T\z\Z`)时,不会视为2个字符,而视为1个字符来处理。

3. Oracle兼容说明

因为GreatSQL已原生支持 SUBSTR() 函数,因此想要在GreatSQL中使用扩展后的 SUBSTR() 函数时,需要先执行 SET sql_mode = ORACLE; 激活Oracle兼容模式。

在Oracle兼容模式下,与GreatSQL原生的 SUBSTR() 函数区别在于两处:

  • 当参数 pos 为0时,Oracle兼容模式下视为1;而GreatSQL原生函数仍视为0,且返回结果总是为空值(‘’)。
  • 当返回结果为空值(‘’)时,Oracle兼容模式下返回NULL;而GreatSQL原生函数仍旧返回空值(‘’)。

GreatSQL原生的 SUBSTR() 函数是 SUBSTRING() 函数的别名,其用法是:

  1. SUBSTRING(str,pos)
  2. SUBSTRING(str FROM pos)
  3. SUBSTRING(str,pos,len)
  4. SUBSTRING(str FROM pos FOR len)

更多关于原生的 SUBSTR() 函数用法这里不再赘述。

4. 示例

  1. -- 切换到Oracle mode
  2. greatsql> SET sql_mode = ORACLE;
  3. -- pos=0时,视为pos=1
  4. greatsql> SELECT SUBSTR('GreatSQL', 0, 1);
  5. +--------------------------+
  6. | SUBSTR('GreatSQL', 0, 1) |
  7. +--------------------------+
  8. | G |
  9. +--------------------------+
  10. greatsql> SELECT SUBSTR('GreatSQL', 1, 1);
  11. +--------------------------+
  12. | SUBSTR('GreatSQL', 1, 1) |
  13. +--------------------------+
  14. | G |
  15. +--------------------------+
  16. -- 当结果为空值时,返回NULL
  17. greatsql> SELECT SUBSTR('GreatSQL', 9, 1);
  18. +--------------------------+
  19. | SUBSTR('GreatSQL', 9, 1) |
  20. +--------------------------+
  21. | NULL |
  22. +--------------------------+
  23. -- 转义字符视为1个字符处理
  24. greatsql> SELECT SUBSTR('\"GreatSQL', 1);
  25. +-------------------------+
  26. | SUBSTR('\"GreatSQL', 1) |
  27. +-------------------------+
  28. | "GreatSQL |
  29. +-------------------------+
  30. -- 切换到DEFAULT mode下
  31. -- 当pos=0时,返回总是空值
  32. greatsql> SELECT SUBSTR('GreatSQL', 0, 1);
  33. +--------------------------+
  34. | SUBSTR('GreatSQL', 0, 1) |
  35. +--------------------------+
  36. | |
  37. +--------------------------+
  38. -- 当结果为空值时,显式'',而非NULL
  39. greatsql> SELECT SUBSTR('GreatSQL', 9, 1);
  40. +--------------------------+
  41. | SUBSTR('GreatSQL', 9, 1) |
  42. +--------------------------+
  43. | |
  44. +--------------------------+

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx