将字符转换为 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)
);
查看文档
我需要 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)
);
查看文档