我相信我需要一个游标for循环来遍历表test_data中的street1列.我有一个程序需要测试表中的每一行.
这是我到目前为止:
cursor c1 is
street1
from test_data
Begin
If Instr(street1, ‘Cnr’, 1) >= 1;
Then
Newstreetname := Substr(street1, Instr(street1, ‘Cnr’, 1)+3);
Else if
Instr(street1, ‘PO Box’, 1) >= 1;
Then
Newstreetname:= Substr(street1, Instr(street1, ‘PO Box’, 1));
Else if
REGEXP_ Instr (street1, [\d], 1) = 0;
Then
Newstreetname:= street1;
Else if
REGEXP_ Instr (street1, [\d], 1) >= 1;
Then
Newstreetnumber:= regexp_substr(street1, '\d+(\s|\/)(\d+)?-?(\d+)?(\w {1})?');
Newstreetname:= regexp_substr(street1, '(\w+\s\w+)$');
End
Run Code Online (Sandbox Code Playgroud) 这行应该只检查test_data表中的c1字符串,如果没有数字,那么整个c1字符串将显示在result1列中.我尝试测试这部分是自己的,它似乎不起作用.
有人可以帮忙吗?表和列都是创建的,只是没有提供我需要的结果.结果似乎是随机的:一些带有数字的字符串被插入而一些则没有.
SELECT case WHEN REGEXP_Instr(c1, '[:digit:]')=0
THEN c1
end result1
FROM test_data;
Run Code Online (Sandbox Code Playgroud)