使用 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 '%._'
我在 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 '%._'