我有一個場景,我們需要檢查字符串是否有'|'如果不是,則將這些行標記爲'錯誤'。檢查值是否爲'|'用SQL字符串分隔
僞數據一樣 -
create table test_2 (acc_no number, prod_svc varchar2(100), done varchar2(50));
insert into test_2 values (1001, '1234_first', null);
insert into test_2 values (1002, '1234_first|5678_secong', null);
insert into test_2 values (1001, '1234_first:5678_second', null);
現在這3行,而第三行是錯誤,因爲是第一次兩排都沒有錯誤中「:」作爲分隔符。
因爲我寫了一個查詢,只有當有'|'但不是當有單個值,即第一排
update test_2
set done = 'prevalidation-error'
where acc_no in( select acc_no
from test_2
where instr(prod_svc, '|') < 1) ;
我的這個更新語句標誌着第一和第三的錯誤,而它不應該標記第一列作爲錯誤,因爲這是隻有一個值。 正如我們看到我的查詢是完美的情況可能是我們需要爲此編寫一個PLSQL塊,但我仍然無法找到一種方式,我將如何知道prod_svc列只有1個值,要正確!
我使用--- Oracle數據庫12c的企業版發行12.1.0.2.0 - 64位生產
但這種說法是n不是標誌着最後一排的錯誤 因爲該字符串沒有被「分離|」它使用':'作爲分隔符,我認爲這不是acc_no,而是prod_svc! – mradul
@mradul你測試過嗎?它確實包含一個不在'| a-zA-Z0-9_'範圍內的字符,在這種情況下是';' – SomeJavaGuy
是的,我測試它,但改變了regexp_like() prod_svc和我的好 它正在工作:) – mradul