PostgreSQLクエリの一部として整数を文字列に変換するにはどうすればよいですか?


118

PostgreSQLクエリの一部として整数を文字列に変換するにはどうすればよいですか?

したがって、たとえば、私は必要です:

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

where <some integer>は、1から15桁の長さです。


文字列に先行ゼロがある場合はどうしますか?
thisfeller

回答:


123

数値は最大15桁なので、64ビット(8バイト)の整数にキャストする必要があります。これを試して:

SELECT * FROM table
WHERE myint = mytext::int8

::キャスト演算子は歴史が、便利です。PostgresはSQL標準構文にも準拠しています

myint = cast ( mytext as int8)

と比較するリテラルテキストがある場合intint、テキストにキャストします。

SELECT * FROM table
WHERE myint::varchar(255) = mytext

43
ああ。私は実際には逆の方法でそれを必要としました(myintがvarcharに変換されました)。私はやっただけでうまくいきましたmyint::varchar(255) = mytext。ありがとう!
spyd3rr

3
厳密には、これは質問の答えにはなりません。例は問題ではありませんでした-整数を文字/文字列に変換しました。しかし、@ spyd3rrに感謝
FrederikStruck-Schøning2018年

@fredそうではない:OPの実際の問題は、数値とテキスト値を比較しようとして失敗したことです。この回答は、テキストを数値にキャストすることで修正する方法を示しています(たとえOPが数値をテキストにキャストしようとしても)。
ボヘミアン

7
@Bohemian質問のタイトルとテキストには、「PostgreSQLクエリの一部として整数を文字列に変換するにはどうすればよいですか?」と書かれています。次に、これ関連する可能性のある。私の場合、実際には整数を文字列に変換する必要があったため、このスレッドを見つけました。比較のためではなく、引数が文字列でない場合に失敗する集計関数内で使用するためです。その場合、文字通りatmを読み取るため、これは質問に対する回答ではありませんでした。
FrederikStruck-Schøning18年

126

このようにして整数を文字列にキャストできます

intval::text

だからあなたの場合

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

1
これは、JPAネイティブクエリでSpELを使用している場合は機能しません。その場合はキャストを使用する必要があります。
Raj Shah

12

あなたはこれを行うことができます:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.