在 PostgreSQL 中将整数转换为字符串

问题描述 投票:0回答:5

如何将整数转换为字符串作为 PostgreSQL 查询的一部分?

例如,我需要:

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

其中

<some integer>
的长度可以是
1
15
之间的任何数字。

sql postgresql casting type-conversion postgresql-9.1
5个回答
257
投票

由于数字最多可达 15 位,因此您需要转换为 64 位(8 字节)整数。试试这个:

SELECT * FROM table
WHERE myint = mytext::int8

::
cast 操作符历史悠久但很方便。 Postgres 也符合 SQL 标准语法

myint = cast ( mytext as int8)

如果您有想要与

int
进行比较的文字文本,请将
int
转换为文本:

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

198
投票

您可以通过这种方式将整数转换为字符串

intval::text

所以在你的情况下

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

37
投票

你可以这样做:

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

10
投票

如果某个可以存储为字符串的整数包含小数点,并且您想要比较小数点与小数点,下面会有所帮助

select NULLIF('105.0', '')::decimal

SELECT * FROM table WHERE NULLIF('105.0', '')::decimal = 105.0

以下不会转换

select NULLIF('105.0', '')::int

select NULLIF('105.0', '')::integer

这个问题你就过去吧

select 105.3::text 

0
投票

您可以将

INTEGER
转换为
VARCHAR(255)
,如下所示。 *文档详细解释了它:

postgres=# SELECT 27::VARCHAR(255);
 varchar
---------
 27
(1 row)

或者:

postgres=# SELECT CAST(27 AS VARCHAR);
 varchar
---------
 27
(1 row)

此外,您可以使用pg_typeof()来检查值类型,如下所示:

postgres=# SELECT pg_typeof(27);
 pg_typeof
-----------
 integer
(1 row)
© www.soinside.com 2019 - 2024. All rights reserved.