将字符转换为 int 以便正确查询

Cast character to int in order to query properly

我需要 select 列中的一系列值(例如:“1”、“2”、“2A”、“3”...),但这些值是不同的,所以我必须将它们转换为 int 以获得正确的 "BETWEEN" 评估。

这是我尝试过的方法,但它似乎忽略了转换,只返回对应于 numins = 1001 的值:

SELECT sum(totalchiefs) AS totalchiefs
     , sum(totalnochiefs) AS totalnochiefs
     , sum(totalchildrens) AS totalchildrens
     , sum(totalpeople) AS totalpeople
FROM nombrehabs
WHERE numins = 1001 AND ((numpol~E'^\d+$')::integer BETWEEN 1 AND 27);

您可以使用 substring 函数从字符串中提取数字。

SELECT 
    SUM( totalchiefs ) AS totalchiefs,
    SUM ( totalnochiefs ) AS totalnochiefs,
    SUM ( totalchildrens ) AS totalchildrens,
    SUM ( totalpeople ) AS totalpeople 
FROM
    nombrehabs 
WHERE
    numins = 1001 
    AND (SUBSTRING(numpol FROM '\d+')  :: INTEGER BETWEEN 1 AND 27)
);

9.7. Pattern Matching

查看文档