如何将整数转换为字符串作为 PostgreSQL 查询的一部分?
例如,我需要:
SELECT * FROM table WHERE <some integer> = 'string of numbers'
其中
<some integer>
的长度可以是 1
到 15
之间的任何数字。
由于数字最多可达 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
您可以通过这种方式将整数转换为字符串
intval::text
所以在你的情况下
SELECT * FROM table WHERE <some integer>::text = 'string of numbers'
你可以这样做:
SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
如果某个可以存储为字符串的整数包含小数点,并且您想要比较小数点与小数点,下面会有所帮助
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
您可以将
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)