2012-12-10 18 views

Antwort

57

Da die Nummer bis zu 15 Ziffern umfassen kann, müssen Sie in eine 64-Bit- (8-Byte-) Ganzzahl umwandeln. Versuchen Sie dies:

SELECT * FROM table 
WHERE myint = mytext::int8 

Die :: Cast-Operator ist historisch aber praktisch. Postgres entspricht auch dem SQL-Standard Syntax

myint = cast (mytext as int8) 
+22

Ah. Ich brauchte es tatsächlich anders herum (myint konvertiert zu varchar), aber deine Antwort war genug, um mich an den richtigen Ort zu führen. Ich habe gerade 'myint :: varchar (255) = mytext' und es funktioniert. Vielen Dank! – spyd3rr

+0

Genau dies beantwortet die Frage nicht. Das Beispiel war nicht das Problem - Konvertieren einer Ganzzahl in ein Zeichen/String war. Aber danke, @ spyd3rr –

+0

@fred Nicht so: OPs * tatsächliches * Problem war erfolglos, numerische und Textwerte zu vergleichen. Diese Antwort zeigt, wie das behoben werden kann, indem der Text an eine Zahl übergeben wird (obwohl OP versucht hat, eine Zahl in den Text zu schreiben). – Bohemian

49

Sie eine ganze Zahl auf diese Weise in eine Zeichenfolge kann

intval::text 

und so in Ihrem Fall

SELECT * FROM table WHERE <some integer>::text = 'string of numbers' 
Verwandte Themen