Wie kann ich ermitteln, ob ein string numerisch ist in SQL?
In eine SQL-Abfrage in Oracle 10g, die ich brauche, um zu bestimmen, ob ein string numerisch ist oder nicht. Wie kann ich dies tun?
InformationsquelleAutor AndyGeek | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie REGEXP_LIKE:
Aktualisiert die post.. Pls chk.
Dies ist eine gute Lösung - einfach und sauber. Danke!
nicht i18n/l10n sicher - Kommas v. Fristen.
-1, 1.2E10, etc. Eine Funktion TO_NUMBER ist wahrscheinlich der einzig sichere Weg, dies zu tun.
InformationsquelleAutor Chandu
Sie ca versuchen, diese:
wo string1 ist, was du auswerten. Es wird null zurückgegeben, wenn der numerische. Schauen hier zur weiteren Abklärung
Danke @Adrian , du hast mir eine Idee, wie man testen, ob ein string eine Zahl enthält, die durch kombinieren übersetzen und entschlüsseln tegether
InformationsquelleAutor Adrian Carneiro
Ich nicht haben Zugang zu einem 10G-Instanz zum testen, aber das funktioniert in 9i:
Habe ich angenommen, Sie wollen Nullen/Leergut als FALSE behandelt.
InformationsquelleAutor Evan Haas
Wie bereits von Tom Kyte in http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:7466996200346537833, wenn Sie den built-in
TO_NUMBER
in eine benutzerdefinierte Funktion, müssen Sie möglicherweise ein paar zusätzliche Tricks, damit es funktioniert.Das problem ist, dass der optimierende compiler kann erkennen, dass das Ergebnis der
TO_NUMBER
ist nicht überall eingesetzt und optimiert es Weg.Sagt Tom (sein Beispiel war über Termine statt zahlen):
InformationsquelleAutor SQB
Hier ist eine Methode, um zu bestimmen, numerische, kann Teil einer einfachen Abfrage, ohne eine Funktion. Konten für eingebettete Leerzeichen, +, - nicht das erste Zeichen, oder eine zweite Dezimalstelle.
InformationsquelleAutor John Ryan
Fand ich, dass die Lösung
können eingebettete Leerzeichen ... es akzeptiert "123 45 6789", die für meine Zwecke ist keine Zahl.
Anderen Ebene von trim/übersetzen, korrigiert diese. Die folgenden erkennen wird ein string-Feld mit aufeinander folgenden Ziffern mit führenden oder nachgestellten Leerzeichen, so dass to_number(trim(string1)) nicht scheitern wird
InformationsquelleAutor Peter DeGregorio
Für ganze zahlen können Sie der unten. Die ersten änderungen übersetzen Leerzeichen als ein Zeichen, und der zweite ändert die zahlen Räumen. Die Trimmung wird dann null zurückgegeben, wenn nur zahlen vorhanden sind.
InformationsquelleAutor zlsmith86