Oracle:从字符串中删除前4个字符

8
所以我想从Oracle中的一个字符串中删除前4个字符。这些字符每次可能不同。 在我的情况下,我需要去掉IBAN的前四个字符,并将它们放在字符串的末尾。我已经将它们放到了字符串的末尾,但我无法删除前4个字符。我在互联网上找到的每个解决方案都是删除指定的字符,而不是从字符串的某个位置(1到4)删除字符。 我使用下面的代码将前4个字符移到字符串的末尾,并希望尝试类似的方法来删除它们,但没有成功。
SELECT SUBSTR(iban_nummer, 1, 4) INTO iban_substring FROM dual;
iban_nummer := iban_nummer || iban_substring;

3
请删去多余的“number”,这是IBAN而不是IBAN号码。 - Michael-O
4个回答

11
请参考文档:

substring_length ... 当未指定该参数的值时,该函数将返回从字符串结尾开始的所有字符。当指定小于1的值时,函数将返回NA。

因此, iban_nummer := substr(iban_nummer, 5) || substr(iban_nummer, 1,4) 可以正常工作。第一部分选择从第5个字符开始的所有字符,第二部分选择第1~4个字符。


7
update table_name set col_name=substr(col_name,5);

1

try regexp, like:

SELECT regexp_replace(t.iban_nummer,'(.{4})(.*)','\2\1') FROM t;

0
使用正则表达式的另一种方法:
SELECT regexp_replace(t.iban_nummer,'^.{4}(.*)','\2\1') FROM dual;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接