Ich habe ein Szenario, in dem wir überprüfen müssen, ob die Zeichenfolge '|' getrennter Wert oder nicht, wenn nicht, dann markieren Sie diese Zeilen als 'Fehler'.Überprüfen Sie, ob die Werte '|' getrennt in SQL-Zeichenfolge
Dummy-Daten ist wie -
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);
nun unter diesen drei Reihen ersten beiden Reihen nicht Fehler sind während der 3. Zeile Fehler ist, da es ‚:‘ als Trennzeichen.
dafür habe ich eine Abfrage geschrieben, die nur funktioniert, wenn '|' aber nicht, wenn es Einzelwert d 1. Reihe
update test_2
set done = 'prevalidation-error'
where acc_no in( select acc_no
from test_2
where instr(prod_svc, '|') < 1) ;
Mein dieses Update-Anweisung markiert 1. und 3. als Fehler, während es nicht erste Zeile als Fehler markieren sollte, weil das nur ein Wert ist. Wie wir sehen, meine Abfrage ist perfekt für das Szenario möglicherweise müssen wir einen PLSQL-Block dafür schreiben, aber immer noch nicht in der Lage, einen Weg zu finden, wie weiß ich, ob es nur 1 Wert für prod_svc Spalte und das hat richtig liegen!
ich verwende --- Oracle Database Enterprise Edition 12c Veröffentlichung 12.1.0.2.0 - 64-Bit-Produktion
Aber diese Aussage nnot markiert die letzte Zeile als Fehler weil diese Zeichenfolge nicht durch 'getrennt | ' Es benutzt ':' als Trennzeichen und ich denke, das ist nicht acc_no, sondern prod_svc! – mradul
@mradul hast du es getestet? Es tut, weil es ein Zeichen enthält, das nicht im Bereich von '| a-zA-Z0-9_' liegt, ein'; 'in diesem Fall – SomeJavaGuy
Ja, ich teste es, aber ändere die Änderung des Spaltennamens in regexp_like() zu prod_svc und zu meinem guten ES FUNKTIONIERT :) – mradul