2016-04-19 4 views
0

Ich habe ein Feld, das eine Zeichenfolge ist, die ich in Numerics verwandeln möchte. Problem ist, dass das Feld Zeichen enthalten kann und es mir schwer fällt, einen einfachen regulären Ausdruck zu ersetzen. Hier ist ein Beispiel,Wie Zeichenkette zu Numerisch mit Zeichen in es (Postgres)

field1 
1 
1.5 
2adfk3 
2. Section 2 
0'#%0ls23 
3.987 

Was ich im Wesentlichen will, ist, wenn das Feld nativ als Numeric gegossen werden kann, dann die Ziffern zurückkehren, sonst NULL zurück. Zum Beispiel möchte ich ein anderes Feld,

field2 
1 
1.5 
NULL 
NULL 
NULL 
3.987 

wo Feld2 ist jetzt eine Zahl. Was ist der beste Weg, dies zu tun?

In Excel nehme ich dies mit einem Fall Ausdruck

Antwort

0

Sie können dies tun, um IFERROR nächste sein würde und eine regex:

select column1, 
     case 
      when column1 ~ '^[0-9\.]+$' then column1::numeric 
      else null 
     end as column2 
from the_table 

Die Regex überprüft, ob der Inhalt der Spalte nur aus Zahlen besteht und ein Punkt. Wenn dies der Fall ist, kann der Wert in einen numerischen Wert umgewandelt werden, andernfalls wird null

zurückgegeben
Verwandte Themen