我有一个这样的表格:
xxx-xxxxxxx-29
xxx-xxxxxx-87
xxx-xxxxxxxxx-2
xxx-xxx-33
我需要将每个以-n结尾的字符替换为-0n(在破折号和数字之间添加零)。 保留 -nn 不变。
因此,如果从右数第二个字符是'-',则用'-0'替换它。
这可以使用UPDATE完成吗?
我有一个这样的表格:
xxx-xxxxxxx-29
xxx-xxxxxx-87
xxx-xxxxxxxxx-2
xxx-xxx-33
我需要将每个以-n结尾的字符替换为-0n(在破折号和数字之间添加零)。 保留 -nn 不变。
因此,如果从右数第二个字符是'-',则用'-0'替换它。
这可以使用UPDATE完成吗?
-n
替换为 -0n
(在破折号和数字之间加一个零)。regexp_replace()
:update mytable set mycol = regexp_replace(mycol, '-(\d)$', '-0\1');
'-(\d)$'
匹配字符串末尾的短横线后跟一个数字,并捕获该数字;然后你可以在前面添加一个前导 '0'
。
update mytable
set data = substr(data, 1, length(data)-1) || '0' || substr(data,-1)
where data like '%-_';
'-(\d)$'
是一个不错的正则表达式,加上 +1。在大数据集上,使用 where 条件会更有效率。 - Lalit Kumar B