PostgreSQL如何转换多个值

gdrx4gfi  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(182)

我有一个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)

zd287kbt

zd287kbt1#

你可以创建一个键数组,只投一次:

WHERE primary_key =ANY('{123,456,789}'::text[])

字符串

相关问题