Oracle 中的 Substr SQL

Substr in Oracle SQL

以下两个查询 return 相同的结果。你能告诉我为什么以及哪个更合适吗?

select substr('87731000',0,8) from dual;

select substr('87731000',1,8) from dual;

这个版本比较合适:

select substr('87731000',1,8) from dual;

第二个参数为起始位置。在oracle中,字符串的起始位置总是1.

这两个语句都工作得很好,但这只是因为数据库有用并且假设如果您输入“0”,则意味着从字符串的开头开始。

来自 oracle 文档: http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm

If position is 0, then it is treated as 1.