2016-05-06 14 views
0

以下の両方の問合せで同じ結果が返されます。なぜ、どのようなことがより適切であるか教えてください。Oracle SQLのSubstr

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

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

答えて

4

このバージョンは、より適切である:

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

第2のパラメータは、開始位置です。オラクルでは、文字列の開始位置は常に1です。

両方のステートメントは正常に機能しますが、データベースが役立ち、「0」を入力すると、文字列オラクルのドキュメントから

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm

位置が0であれば、それは1

+0

どうもありがとう、ジョエルとして扱われます! –

+2

0を使用すると、他の誰かがあなたのコードを見て、文字位置2から始まる 'substr 'を書かなければならないとき、ゼロベースであると考えるかもしれません! –

+0

@PunterVicky解決済みの質問に印を付けるのを忘れないでください! – OscarAkaElvis