How do I convert an integer to string as part of a PostgreSQL query?
So, for example, I need:
SELECT * FROM table WHERE <some integer> = 'string of numbers'
where <some integer>
can be anywhere from 1
to 15
digits long.
How do I convert an integer to string as part of a PostgreSQL query?
So, for example, I need:
SELECT * FROM table WHERE <some integer> = 'string of numbers'
where <some integer>
can be anywhere from 1
to 15
digits long.
Because the number can be up to 15 digits, you'll need to cast to an 64 bit (8-byte) integer. Try this:
SELECT * FROM table
WHERE myint = mytext::int8
The ::
cast operator is historical but convenient. Postgres also conforms to the SQL standard syntax
myint = cast ( mytext as int8)
If you have literal text you want to compare with an int
, cast the int
to text:
SELECT * FROM table
WHERE myint::varchar(255) = mytext
myint::varchar(255) = mytext
and it works. Thanks! –
Diarrhea You can cast an integer to a string in this way
intval::text
and so in your case
SELECT * FROM table WHERE <some integer>::text = 'string of numbers'
You could do this:
SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
And if some integer which could be stored as string contains decimal points and you would want to compare decimal to decimal, below would help
select NULLIF('105.0', '')::decimal
SELECT * FROM table WHERE NULLIF('105.0', '')::decimal = 105.0
Below won't convert
select NULLIF('105.0', '')::int
select NULLIF('105.0', '')::integer
For this question you will just go by
select 105.3::text
You can convert INT
to VARCHAR
as shown below. *The doc explains type conversion in detail:
postgres=# SELECT 123::VARCHAR;
varchar
---------
123
(1 row)
Or:
postgres=# SELECT CAST(123 AS VARCHAR);
varchar
---------
123
(1 row)
In addition, you can use pg_typeof() to check the type of 123
as shown below:
postgres=# SELECT pg_typeof(123);
pg_typeof
-----------
integer
(1 row)
And, if you set VARCHAR(2)
to 123
, the result is 12
as shown below:
postgres=# SELECT 123::VARCHAR(2);
varchar
---------
12
(1 row)
But, the type of 12
is VARCHAR
(CHARACTER VARYING
) rather than VARCHAR(2)
(CHARACTER VARYING(2)
) as shown below:
postgres=# SELECT pg_typeof(123::VARCHAR(2));
pg_typeof
-------------------
character varying
(1 row)
© 2022 - 2024 — McMap. All rights reserved.