2016-05-06 6 views
0

Die beiden folgenden Abfragen geben das gleiche Ergebnis zurück. Kannst du mich bitte wissen lassen, warum und was ist angemessener?Substr in Oracle SQL

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

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

Antwort

4

Diese Version ist besser geeignet:

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

Der zweite Parameter ist die Startposition. In oracle ist die Startposition für einen String immer 1.

Beide Anweisungen funktionieren einwandfrei, aber nur, weil die Datenbank hilfreich ist, und wenn Sie '0' eingeben, bedeutet dies, dass Sie am Anfang von beginnen die Saite.

von der Oracle-Dokumentation: http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm

Wenn Position 0 ist, dann wird es als 1.

+0

Dank behandelt viel, Joel! –

+2

Und wenn Sie 0 verwenden, dann, wenn jemand anderes Ihren Code sieht und einen 'substr' schreiben muss, der an der Zeichenposition 2 beginnt, können sie 1 verwenden und denken, dass es nullbasiert ist! –

+0

@PunterVicky vergessen Sie nicht, markieren Sie die Frage als gelöst! – OscarAkaElvis