PostgreSQL 쿼리의 일부로 정수를 문자열로 어떻게 변환합니까?


118

PostgreSQL 쿼리의 일부로 정수를 문자열로 어떻게 변환합니까?

예를 들어 다음이 필요합니다.

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

여기서 <some integer>1 ~ 15 자리에서 어느 곳이 될 수 있습니다.


문자열 앞에 0이 있으면 어떻게 하시겠습니까?
thisfeller dec.

답변:


124

숫자는 최대 15 자리까지 가능하므로 64 비트 (8 바이트) 정수로 캐스트해야합니다. 이 시도:

SELECT * FROM table
WHERE myint = mytext::int8

::캐스트 연산자는 역사적하지만 편리합니다. Postgres는 또한 SQL 표준 구문을 준수합니다.

myint = cast ( mytext as int8)

와 비교할 리터럴 텍스트가있는 int경우 int를 텍스트로 캐스트합니다 .

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

43
아. 나는 실제로 다른 방법이 필요했지만 (myint가 varchar로 변환 됨) 귀하의 대답은 나를 올바른 장소로 안내하기에 충분했습니다. 방금했고 myint::varchar(255) = mytext작동합니다. 감사!
spyd3rr

3
엄밀히 말하면 이것은 질문에 대한 답이 아닙니다. 예는 문제가 아니 었습니다. 정수를 문자 / 문자열로 변환하는 것이 었습니다. 그러나 감사, spyd3rr @
프레데릭은 삼진 - Schøning

@fred 그렇지 않습니다 : OP의 실제 문제는 숫자와 텍스트 값을 비교하는 데 실패했습니다. 이 답변은 텍스트를 숫자로 캐스팅하여 수정하는 방법을 보여줍니다 (OP가 숫자를 텍스트로 캐스팅하려고 했음에도 불구하고).
보헤미안

7
@Bohemian 질문 제목과 텍스트는 "PostgreSQL 쿼리의 일부로 정수를 문자열로 어떻게 변환합니까?"라고 말합니다. 그렇다면 이것이 언제 관련 될 수 있는지에 대한 입니다 . 필자의 경우 비교가 아니라 인수가 문자열이 아닌 경우 실패 할 집계 함수 내부에서 사용하기 위해 실제로 정수를 문자열로 변환해야했기 때문에이 스레드를 찾았습니다. 어떤 경우에는 문자 그대로 atm을 읽으므로 질문에 대한 답이 아닙니다.
Frederik Struck-Schøning

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.