# Oracle兼容-函数-SUBSTRB()函数


1. 语法

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

2. 定义和用法

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

  • 若pos为0,视为1。表示string的最开始的byte开始(第1个byte)。
  • 若pos为正数,表示由string的第pos个byte开始。
  • 若pos为负数,表示由string末尾反向数回第pos个byte开始。
  • 若substring_length未指定,表示取到string的最后一个byte为止。
  • 若substring_length小于1,则返回NULL。
  • 若传回的内容只包含multi-byte字符(多字节字符,例如中文字符)的一部分,该部分会以空格替代。

3. 示例

1. greatsql> CREATE TABLE t1 ( c1 CHAR(20) );
2. greatsql> INSERT INTO t1 VALUES ('GreatSQL数据库默认端口3306');

4. -- 空格的16进制值是20
5. greatsql> SELECT HEX(SUBSTRB(c1, 8, 6)), CONCAT(SUBSTRB(c1, 8, 6), '|'), c1 FROM t1;
6. +------------------------+--------------------------------+-----------------------------------+
7. | HEX(SUBSTRB(c1, 8, 6)) | CONCAT(SUBSTRB(c1, 8, 6), '|') | c1                                |
8. +------------------------+--------------------------------+-----------------------------------+
9. | 4CE695B02020           | L数  |                         | GreatSQL数据库默认端口3306        |
10. +------------------------+--------------------------------+-----------------------------------+

12. greatsql> SELECT HEX(SUBSTRB(c1, 8, 7)), CONCAT(SUBSTRB(c1, 8, 7), '|'), c1 FROM t1;
13. +------------------------+--------------------------------+-----------------------------------+
14. | HEX(SUBSTRB(c1, 8, 7)) | CONCAT(SUBSTRB(c1, 8, 7), '|') | c1                                |
15. +------------------------+--------------------------------+-----------------------------------+
16. | 4CE695B0E68DAE         | L数据|                         | GreatSQL数据库默认端口3306        |
17. +------------------------+--------------------------------+-----------------------------------+

19. greatsql> SELECT HEX(SUBSTRB(c1, 9, 9)), CONCAT(SUBSTRB(c1, 9, 9), '|'), c1 FROM t1;
20. +------------------------+--------------------------------+-----------------------------------+
21. | HEX(SUBSTRB(c1, 9, 9)) | CONCAT(SUBSTRB(c1, 9, 9), '|') | c1                                |
22. +------------------------+--------------------------------+-----------------------------------+
23. | E695B0E68DAEE5BA93     | 数据库|                        | GreatSQL数据库默认端口3306        |
24. +------------------------+--------------------------------+-----------------------------------+

26. greatsql> SELECT HEX(SUBSTRB(c1, -10, 4)), CONCAT(SUBSTRB(c1, -10, 4), '|'), c1 FROM t1;
27. +--------------------------+----------------------------------+-----------------------------------+
28. | HEX(SUBSTRB(c1, -10, 4)) | CONCAT(SUBSTRB(c1, -10, 4), '|') | c1                                |
29. +--------------------------+----------------------------------+-----------------------------------+
30. | E7ABAF20                 | 端 |                             | GreatSQL数据库默认端口3306        |
31. +--------------------------+----------------------------------+-----------------------------------+

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx