替换并转换字符串 - Postgresql

时间:2016-01-12 02:11:20

标签: sql postgresql netezza

我需要从名为Sequence的列中选择最大值,即varchar。值列为1-1,1-2,1-3,2-1,2-2,2-3,3-1,3-2,3-3等。如何删除&# 34; - " (并在必要时转换为int)以便能够使用max功能?目前,尝试选择max(Sequence)会返回所有记录。

SELECT MAX(regexp_replace(Sequence, '-', '')), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy

引发以下错误:

  

错误[42S02]错误:功能' REGEXP_REPLACE(VARCHAR,UNKNOWN,   UNKNOWN)'不存在无法识别满足的功能   给定的参数类型您可能需要添加显式的类型转换* /

示例表:

EXAMPLE TABLE

期望的结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

也许你可以使用字符串maximum:

SELECT MAX(Sequence), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy;

这适用于所提供的数据。如果由于您有'1-10'之类的值而无法正常工作,那么您可以将其转换为浮点数或小数:

SELECT MAX(REPLACE(Sequence, '-', '.')::numeric), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy;