Ich muss ISBN von 10 Ziffern in 13 Ziffern konvertieren. Ich habe versucht, aber nicht korrektes Ergebnis zu erhalten. Dies ist der Code, den ich versucht habe und es gibt kein korrektes Ergebnis.Orakel Konvertieren von ISBN10 zu ISBN13
Create or replace FUNCTION F_ISBN_CONV_13 (ISBN_10 IN VARCHAR2) RETURN VARCHAR2
AS
V_ISBN_13 VARCHAR2(13);
BEGIN
SELECT
CASE WHEN LENGTH(ISBN_10) = 10 THEN
CASE WHEN SUBSTR(ISBN_10,1,3) = '801' THEN
'201' ||
SUBSTR(ISBN_10,1,9) ||
SUBSTR(
(
10 -
SUBSTR(
(
(
2 +
1 +
SUBSTR(ISBN_10,2,1) +
SUBSTR(ISBN_10,4,1) +
SUBSTR(ISBN_10,6,1) +
SUBSTR(ISBN_10,8,1)
) +
(
(
0 +
SUBSTR(ISBN_10,1,1) +
SUBSTR(ISBN_10,3,1) +
SUBSTR(ISBN_10,5,1) +
SUBSTR(ISBN_10,7,1) +
SUBSTR(ISBN_10,9,1)
)
) * 3
)
,-1
,1
)
)
,-1
,1
)
ELSE
'978' ||
SUBSTR(ISBN_10,1,9) ||
SUBSTR(
(
10-
SUBSTR(
(
(
9 +
8 +
SUBSTR(ISBN_10,2,1) +
SUBSTR(ISBN_10,4,1) +
SUBSTR(ISBN_10,6,1) +
SUBSTR(ISBN_10,8,1)
) +
(
(
7 +
SUBSTR(ISBN_10,1,1) +
SUBSTR(ISBN_10,3,1) +
SUBSTR(ISBN_10,5,1) +
SUBSTR(ISBN_10,7,1) +
SUBSTR(ISBN_10,9,1)
)
) * 3
)
,1
,1
)
)
,-1
,1
)
END
ELSE
ISBN_10
END INTO V_ISBN_13
FROM
DUAL;
RETURN V_ISBN_13;
EXCEPTION
--<code>
END F_ISBN_CONV_13;
Was bekommen Sie und was erwarten Sie? Bitte geben Sie ein Beispiel an. –
Zu schwer, um Ihre Logik zu analysieren. Kann sein, wenn Sie in Ihre Logik schreiben können, einmal kann es implementieren – XING
Was ** ist ** das richtige Ergebnis? Ich nehme an, wir sind nicht verpflichtet, daraus abzuleiten, dass Ihr Code ** nicht ** das korrekte Ergebnis liefert. Also, wie sonst? Oder sollen wir ** wissen, was es bedeutet, ISBN10 zu ISBN13 zu konvertieren? – mathguy