使用 PostgreSQL 删除数字中的特定数字

Delete specific digit in a number using PostgreSQL

我在 memberships table.

中有一个名为 membership_number varchar(255) 的列

这是一些示例数据:

0000001234
0000002345
0000003456

membership_number 必须有 10 个数字。如果用户输入的数字少于 10 位,则相应地用前导零填充缺失的位置。

目前我在这个栏目有一些数据如下:

00001234.0
00002345.1
00003456.2

我想删除倒数第二位的小数点,然后添加一个前导零来处理所有这些不需要的会员编号。执行此操作的最佳方法是什么?

我知道 SUBSTRING() 及其参数,但到目前为止无法使它工作。

子串不是你想要的功能,你想要REPLACE and LPAD个功能的组合:

 select lpad( replace (membership_number, '.', ''), 10, '0')  
   from menberships; 

(table name assumed) 如果它必须是 10 位数字,为什么你将其定义为最多 255 位的长度?

尝试此操作之前请备份您的数据。

这样行吗?

UPDATE tablename SET membership_number = concat('0',replace(membership_number,'.','')) WHERE membership_number LIKE '%._'