PostgreSQL 如何转换多个值

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

我有一个 PostgreSQL 数据库,其主键列的类型为

character varying length 32
。 键应该是
19 digit integer
,例如
1234567891234567891
我想对PK列做一个简单的查询

SELECT *
FROM my_table
WHERE primary_key = 1234567891234567891

这给了我错误:

operator does not exist: character varying = bigint

我无法将列

CAST
转换为
bigint
,因为它始终是 19 位数字,所以我将数字转换为
character varying
类型。

但是,由于我有一长串键,我更喜欢一个简洁的函数来将它们全部转换,而不是逐行转换。这就是我目前所拥有的:

SELECT *
FROM my_table
WHERE primary_key IN (CAST(1234567891234567891 AS character varying), 
                      CAST(1234567891234567892 AS character varying),
                      /* ... so on so forth ... */
                      CAST(1234567891234567899 AS character varying))

我只是一个用户,所以我没有权限将列类型更改为数字(19)

sql postgresql select casting
1个回答
0
投票

您可以创建一个键数组,然后只投射一次:

WHERE primary_key =ANY('{123,456,789}'::text[])
© www.soinside.com 2019 - 2024. All rights reserved.