SQL: Wenn nicht konvertiert werden kann, wird to_number als null festgelegt

7

Ich habe eine Tabelle mit diesen Werten:

%Vor%

und ich möchte mit einem auswählen, dass, wenn ich nicht in Nummer konvertieren kann, setzen Sie NULL.

    
macwadu 24.06.2011, 16:27
quelle

5 Antworten

12

Ich benutze im Allgemeinen translate dafür, weil es solch ein ungerader Eckfall ist:

%Vor%

Wenn nötig, kann das zu einer Prozedur gemacht werden, aber ich bin mir nicht sicher, ob es in Bezug auf die Leistung sehr viel Nutzen bringen würde.

    
cwallenpoole 24.06.2011, 16:36
quelle
10

Sie können eine Funktion erstellen, die versucht, die Zeichenfolge in eine Zahl zu konvertieren, und die Ausnahme abfängt. Etwas wie

%Vor%

Dann können Sie

%Vor%     
Justin Cave 24.06.2011 16:32
quelle
4

Sie könnten auch REGEXP_LIKE verwenden:

%Vor%

Zum Beispiel:

%Vor%     
DCookie 24.06.2011 18:15
quelle
2

Bei Oracle 12. 2 kann dies mit der Option on conversion error etwas einfacher gemacht werden:

%Vor%

Optional können Sie auch eine Formatmaske angeben, ähnlich der to_number() Funktion.

Ich nehme an, das wäre schneller als mit einer PL / SQL-Funktion, nicht sicher über die Leistung im Vergleich zu einem case mit einer Regex. Aber es ist definitiv viel kürzer.

    
a_horse_with_no_name 27.10.2017 10:21
quelle
0
%Vor%     
fdaines 24.06.2011 16:38
quelle

Tags und Links