提问人:sushi 提问时间:11/16/2023 更新时间:11/16/2023 访问量:40
PostgreSQL如何转换多个值
PostgreSQL how to cast multiple values
问:
我有一个PostgreSQL数据库,其主键列类型为。
键应为 ,例如 我想对 PK 列做一个简单的查询character varying length 32
19 digit integer
1234567891234567891
SELECT *
FROM my_table
WHERE primary_key = 1234567891234567891
这给了我错误:
operator does not exist: character varying = bigint
我不能将列转换为 a,因为它总是 19 位数字,所以我将数字转换为键入。CAST
bigint
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))
我只是一个用户,所以我无权将列类型更改为 numeric(19)
答:
0赞
Frank Heikens
11/16/2023
#1
您可以创建一个键数组,并只强制转换一次:
WHERE primary_key =ANY('{123,456,789}'::text[])
上一个:从注释字符串中提取日期
下一个:试验 Java 泛型
评论
'1234567891234567891'
1234567891234567891
... WHERE primary_key = '1234567891234567891'
WHERE primary_key::bigint = 1234567891234567891
select '1234567891234567891'::bigint = 1234567891234567891; t
bigint