替换和转换字符串 - Postgresql
Replace and convert string - Postgresql
我需要 select 来自名为 Sequence 的列的最大值,它是 varchar。这些值列为 1-1、1-2、1-3、2-1、2-2、2-3、3-1、3-2、3-3 等。如何删除“- "(并在必要时转换为 int)以便能够使用 max 功能?目前,正在尝试 select max(Sequence) returns 所有记录。
SELECT MAX(regexp_replace(Sequence, '-', '')), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy
引发以下错误:
ERROR [42S02] ERROR: Function 'REGEXP_REPLACE(VARCHAR, UNKNOWN,
UNKNOWN)' does not exist Unable to identify a function that satisfies
the given argument types You may need to add explicit typecasts */
示例table:
期望的结果:
也许你可以只使用字符串最大值:
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;
我需要 select 来自名为 Sequence 的列的最大值,它是 varchar。这些值列为 1-1、1-2、1-3、2-1、2-2、2-3、3-1、3-2、3-3 等。如何删除“- "(并在必要时转换为 int)以便能够使用 max 功能?目前,正在尝试 select max(Sequence) returns 所有记录。
SELECT MAX(regexp_replace(Sequence, '-', '')), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy
引发以下错误:
ERROR [42S02] ERROR: Function 'REGEXP_REPLACE(VARCHAR, UNKNOWN, UNKNOWN)' does not exist Unable to identify a function that satisfies the given argument types You may need to add explicit typecasts */
示例table:
期望的结果:
也许你可以只使用字符串最大值:
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;