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

时间:2017-07-26 07:33:19

标签: postgresql-9.5

我需要选择一系列值(例如:" 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);

1 个答案:

答案 0 :(得分:0)

您可以使用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

上的文档