You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:批量转换多值查询varchar类型19位整数主键

批量转换19位整数为字符型匹配varchar主键的简洁方法

针对你遇到的问题,这里提供两种简化批量转换的方案,避免逐个值写CAST:

方案1:用VALUES子句统一转换

将所有19位整数放在VALUES子句中,先转为numeric(支持19位整数的精度),再统一转换为varchar,最后通过JOIN匹配:

SELECT t.*
FROM my_table t
INNER JOIN (
  VALUES
    (1234567891234567891::numeric),
    (1234567891234567892::numeric),
    -- 继续添加其他19位整数
    (1234567891234567899::numeric)
) AS temp_ids(id)
ON t.primary_key = temp_ids.id::varchar;

这种方式只需要在子查询末尾写一次::varchar转换逻辑,不用给每个值单独加CAST。

方案2:直接用字符串数组展开

如果你的19位整数是逗号分隔的字符串(比如从其他地方复制的列表),可以用string_to_array和unnest直接生成字符型的主键列表:

SELECT *
FROM my_table
WHERE primary_key IN (
  SELECT unnest(string_to_array(
    '1234567891234567891,1234567891234567892,...,1234567891234567899',
    ','
  ))
);

这个方法最简洁,只需把所有数字用逗号拼接成一个字符串,无需任何类型转换函数,直接匹配varchar类型的主键。

两种方案都能避免逐行转换的繁琐,且不需要修改表结构权限。

内容的提问来源于stack exchange,提问作者sushi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 23:17:17