Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Konfiguration Ihrer Datenbank » Datenbankoptionen » Einführung in Datenbankoptionen » Alphabetische Liste der Optionen

 

ansi_substring-Option [Kompatibilität]

Steuert das Verhalten der Funktion SUBSTRING (SUBSTR), wenn negative Werte für die Start- oder Längenparameter angegeben werden

Zulässige Werte

Off, On

Standardwert

On

Bereich

Kann für eine einzelne Verbindung oder die Gruppe PUBLIC angegeben werden. Wird sofort wirksam.

Beschreibung

Wenn die Option ansi_substring auf "On" gesetzt ist, entspricht das Verhalten der Funktion SUBSTRING dem ANSI/ISO SQL/2003-Verhalten. Ein negatives oder Null-Start-Offset wird behandelt, als ob die Zeichenfolge links mit Nicht-Zeichen aufgefüllt ist, und gibt einen Fehler aus, wenn eine negative Länge angegeben ist.

Wenn diese Option auf "Off" gesetzt ist, ist das Verhalten der Funktion SUBSTRING dasselbe wie in früheren Versionen von SQL Anywhere: Ein negatives Start-Offset bedeutet ein Offset vom Ende der Zeichenfolge aus, und eine negative Länge bedeutet, dass die gewünschte Teilkette Länge-Zeichen links vom Start-Offset endet. Überdies entspricht ein Start-Offest von "0" einem Start-Offset von "1".

Die Einstellung dieser Option wirkt sich nicht auf das Verhalten der Funktion BYTE_SUBSTR aus. Es wird empfohlen, dass Sie die Verwendung von nicht-positiven Start-Offsets oder negativen Längen mit der Funktion SUBSTRING vermeiden. Wo immer möglich sollten Sie stattdessen die Funktionen LEFT oder RIGHT verwenden.

Siehe auch
Beispiele

Die folgenden Beispiele zeigen, basierend auf der Option ansi_substring, die Unterschiede bei den von der Funktion SUBSTRING zurückgegebenen Werten.

SUBSTRING( 'abcdefgh',-2,4 );
  ansi_substring = Off ==> 'gh' // substring starts at second-last character
  ansi_substring = On  ==> 'a'  // takes the first 4 characters of 
                                // ???abcdefgh and discards all ?
SUBSTRING( 'abcdefgh',4,-2 );
  ansi_substring = Off ==> 'cd'
  ansi_substring = On  ==> value -2 out of range for destination

SUBSTRING( 'abcdefgh',0,4 );
  ansi_substring = Off ==> 'abcd'
  ansi_substring = On  ==> 'abc'