我有一张人的表。每个人可以有几个regnums(主要是整数,但有些像M/2344和W345)。为了使事情更复杂一些,有NULL,空白和像'NA'这样的字符串。由于其不可预知的组成,所述规则被存储在文本数组字段中(例如{12345,M/2344}和{3459,NA})。PostgreSQL文本数组 - 查询为整数,忽略非数字
因为最人都可以被视为整数regnums,我希望能够做的事情与此字段一样找人带491555和491685.
我之间,说,REGNUM已经试过:
SELECT id,forename,surname,regnum FROM (SELECT *, unnest(regnum) reg FROM people) as TBL WHERE reg BETWEEN '491555' AND '491685';
但结果包括外的范围regnums,例如49162我想这是因为嵌套的REGNUM领域仍然是一个文本字段
我也试着铸造REGNUM为整场 - unnest(regnum::integer[])
- 但我得到的错误(?): Error in query: ERROR: invalid input syntax for integer: "NA"
我认为我在正确的轨道上,但我不知道如何忽略非整型的regnums。有任何想法吗?
我不知道PostgreSQL有这个能力,但我会尝试设置一个'CASE'为其中列的值是测试的选择的部分,如果它是一个数字,如果是,则返回数量,否则返回一个非常大的数字(这将不会被包括在范围内,或任何其他排除价值E)。 – FDavidov
谢谢@FDavidov。我想它会来CASE,但我不能完全正确。 – Greg