मुझे पीएल/एसक्यूएल में त्रुटि के नीचे आश्चर्य हो रहा है

FCBD(i)='DEUT TRA USD RM TRAD UK, GB02DEUT40508124381319 (USD)',

dbms_output.put_line(INSTR(FCBD(i),' ',INSTR(FCBD(i),',',1,1),2));  output //48
dbms_output.put_line(INSTR(FCBD(i),',',1,1)+2);  output //26

अब मैं पहले से दूसरा घटाने की कोशिश कर रहा हूं इसलिए आउटपुट 48-26 = 22 होना चाहिए लेकिन यह 26 है। यह प्रत्येक स्ट्रिंग के लिए अतिरिक्त 4 दे रहा है,

dbms_output.put_line(INSTR(FCBD(i),' ',INSTR(FCBD(i),',',1,1),2)-INSTR(FCBD(i),',',1,1)+2);

आउटपुट आ रहा है 26

उपरोक्त कथन में कौन सा तार्किक मुद्दा है?

0
user14046507 20 सितंबर 2020, 20:41

2 जवाब

सबसे बढ़िया उत्तर

यह मदद करेगा यदि आपने वह सब दिखाया जो आपने किया, क्योंकि - यह मेरे लिए काम करता है।

SQL> set serveroutput on;
SQL> declare
  2    fcbd varchar2(100) := 'DEUT TRA USD RM TRAD UK, GB02DEUT40508124381319 (USD)';
  3    a varchar2(10);
  4    b varchar2(10);
  5    c number;
  6  begin
  7    a := INSTR(FCBD,' ',INSTR(FCBD,',',1,1),2);
  8    b := INSTR(FCBD,',',1,1)+2;
  9
 10    c := to_number(a) - to_number(b);
 11
 12    dbms_output.put_line('a = ' || a ||', b = ' || b);
 13    dbms_output.put_line('c = a - b = ' || c);
 14
 15    dbms_output.put_line(to_number(INSTR(FCBD,' ',INSTR(FCBD,',',1,1),2))-
 16                         to_number(INSTR(FCBD,',',1,1)+2));
 17  end;
 18  /
a = 48, b = 26
c = a - b = 22
22

PL/SQL procedure successfully completed.

SQL>

यह TO_NUMBER है कि आप गायब हैं, मैं कहूंगा। स्ट्रिंग्स घटाएं नहीं, संख्याएं घटाएं। पंक्तियाँ #15 और 16 देखें।

साथ ही, ब्रैकेट वाले व्यंजक के सामने ऋण चिह्न लगाते समय, उसके भीतर के सभी चिह्न बदले होते हैं, इसलिए आपका +2 -2 बन जाता है।

0
Littlefoot 20 सितंबर 2020, 21:08

आप यहां + को - में बदलना भूल गए हैं।

बस यहां '+2' ठीक करें dbms_output.put_line(INSTR(FCBD(i),' ',INSTR(FCBD(i),',',1,1),2)-INSTR(FCBD(i),',',1,1)+2); से dbms_output.put_line(INSTR(FCBD(i),' ',INSTR(FCBD(i),',',1,1),2)-INSTR(FCBD(i),',',1,1)-2);

अंतिम -2 होना चाहिए।

a - (b+c) a - b - c होना चाहिए, a - b +c नहीं

0
Sayan Malakshinov 20 सितंबर 2020, 21:07