我有一个 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)
您可以创建一个键数组,然后只投射一次:
WHERE primary_key =ANY('{123,456,789}'::text[])