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