Bagaimana cara mengonversi integer menjadi string sebagai bagian dari kueri PostgreSQL?

119

Bagaimana cara mengonversi integer menjadi string sebagai bagian dari kueri PostgreSQL?

Jadi, misalnya, saya butuh:

SELECT * FROM table WHERE <some integer> = 'string of numbers'

dimana <some integer>bisa terdiri dari 1 sampai 15 digit.

spyd3rr
sumber
Apa yang akan Anda lakukan jika string Anda memiliki nol di depan?
penjual ini

Jawaban:

124

Karena jumlahnya bisa sampai 15 digit, Anda perlu mentransmisikan ke integer 64 bit (8-byte). Coba ini:

SELECT * FROM table
WHERE myint = mytext::int8

The ::cast operator adalah sejarah tapi nyaman. Postgres juga sesuai dengan sintaks standar SQL

myint = cast ( mytext as int8)

Jika Anda memiliki teks literal yang ingin Anda bandingkan dengan int, transmisikan intke teks:

SELECT * FROM table
WHERE myint::varchar(255) = mytext
Bohemian
sumber
43
Ah. Saya sebenarnya membutuhkannya sebaliknya (myint diubah menjadi varchar) tetapi jawaban Anda cukup untuk membimbing saya ke tempat yang tepat. Saya baru saja melakukannya myint::varchar(255) = mytextdan berhasil. Terima kasih!
spyd3rr
3
Sebenarnya, ini tidak menjawab pertanyaan itu. Contohnya bukan masalah - mengubah integer menjadi char / string adalah. Tapi terima kasih, @ spyd3rr
Frederik Struck-Schøning
@fred Tidak begitu: Masalah OP yang sebenarnya tidak berhasil mencoba membandingkan nilai numerik dan teks. Jawaban ini menunjukkan bagaimana cara memperbaikinya dengan mentransmisikan teks ke suatu angka (meskipun OP mencoba mentransmisikan angka ke teks).
Bohemian
7
@Bohemian Judul dan teks pertanyaan berbunyi: "Bagaimana cara mengubah integer menjadi string sebagai bagian dari kueri PostgreSQL?". Kemudian contoh kapan ini bisa menjadi relevan. Dalam kasus saya, saya menemukan utas ini karena saya sebenarnya harus mengonversi bilangan bulat menjadi string - bukan untuk perbandingan tetapi untuk menggunakan di dalam fungsi agregat yang akan gagal, jika argumennya bukan string. Dalam hal ini, ini bukanlah jawaban atas pertanyaan tersebut, karena secara harfiah dibaca atm.
Frederik Struck-Schøning
126

Anda dapat mentransmisikan integer ke string dengan cara ini

intval::text

dan dalam kasus Anda

SELECT * FROM table WHERE <some integer>::text = 'string of numbers'
Brugolo
sumber
1
Ini tidak akan berfungsi jika Anda bekerja dengan SpEL di kueri asli jpa. Anda harus menggunakan pemeran dalam kasus itu.
Raj Shah
12

Anda bisa melakukan ini:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
djgupta.dll
sumber