2017-10-06 4 views
-4
Start

ich eine kleine requirement.How habe die folgende Ausgabe zu erhalten:Multipliziert eine Zahl mit seiner Rückwärtsposition von 2

Eingabezeichenfolge ist 123456

Ich brauche die Rückwärtsposition zu finden, ausgehend von 2, dh 234567. Jetzt multiplizieren Sie jeden Wert mit dem umgekehrten Positionswert und addieren. zB: 1*7+2*6+3*5+4*4+5*3+6*2 in plsql.

+0

Ist das eine andere Hausaufgaben Frage – user1948847

+0

Was Sie bisher versucht haben? –

+0

DECLARE nein NUMMER (20): = '123456'; len NUMMER; c VARCHAR2 (40); add varchar2 (40); gesamt VARCHAR2 (40): = 0; BEGIN FÜR i IN 1..length (no) LOOP dbms_output.put_line ('Schleifen' || i); c: = Teilstr (nein, i, 1); dbms_output.put_line ('Der Wert von C ist' || c); len: = Länge (nein) +2; len: = len-i; dbms_output.put_line ('Länge ist' || len); hinzufügen: = c * len; gesamt: = Summe + add; dbms_output.put_line ('Nach Multiplikation' || hinzufügen); dbms_output.put_line ('Gesamt ist' || total); ENDSCHLEIFE; ENDE; – nkt

Antwort

0

SQL Fiddle

Abfrage 1:

WITH data (value, total) AS (
    SELECT 123456, 0 FROM DUAL 
UNION ALL 
    SELECT TO_NUMBER(SUBSTR(value, 2)), 
     total + SUBSTR(value, 1, 1) * (1 + LENGTH(value)) 
    FROM data 
    WHERE value IS NOT NULL 
) 
SELECT total FROM data WHERE value IS NULL 

Results:

| TOTAL | 
|-------| 
| 77 | 
+0

Danke, Aber ich habe den folgenden Weg versucht, gibt es einen Weg, um es effizienter zu machen? DECLARE nein NUMMER (20): = '123456'; len NUMMER; c VARCHAR2 (40); add varchar2 (40); gesamt VARCHAR2 (40): = 0; BEGIN FÜR i IN 1..length (no) LOOP dbms_output.put_line ('Schleifen' || i); c: = Teilstr (nein, i, 1); dbms_output.put_line ('Der Wert von C ist' || c); len: = Länge (nein) +2; len: = len-i; dbms_output.put_line ('Länge ist' || len); hinzufügen: = c * len; gesamt: = Summe + add; dbms_output.put_line ('Nach Multiplikation' || hinzufügen); dbms_output.put_line ('Gesamt ist' || total); ENDSCHLEIFE; ENDE; – nkt

+0

@ nkt. 'SQL' ist der effizienteste Weg, der bereits oben beantwortet wurde. Mit 'PLSQL' hast du es bereits gelöst. Lassen Sie uns wissen, wenn Sie besondere Hilfe benötigen. – XING

Verwandte Themen