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



我有一个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

有人知道一个有效的声明来做到这一点吗?

您可以在select查询中使用:

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

这并不能产生你想要的结果(可能是1、3、2)。SQL表表示无序的集合。您的数据没有足够的信息来为第二个值指定值"2"而不是"3"。

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

最新更新