用postgres中的唯一整数替换唯一的非整数varchar

时间:2015-02-05 16:39:24

标签: sql postgresql casting

我有一个postgres表'labs'有两列(col1 varchar,col2 varchar)。

col1   |  col2
1.2.3  |   a
1.2.3  |   b
3.4.4  |   c
3.4.4  |   d
2.6.9  |   e
2.6.9  |   f

我想用这样的整数替换col1

col1   |  col2
1  |   a
1  |   b
2  |   c
2  |   d
3  |   e
3  |   f

有人知道这样做的有效声明吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式在select查询中执行此操作:

select dense_rank() over (order by col1) as col1, col2

这不会产生您想要的结果(它将是1,3,2)。 SQL表表示无序集。您的数据没有足够的信息来为第二个值分配值“2”而不是“3”。

您也可以将其合并到update中,但不建议这样做,因为当前值是一个字符串,您想要的结果是整数。