ISBN Prüfung mit einer abgeleiteten Spalte

ISBN Nummern dienen dazu, Bücher weltweit eindeutig zu identifizieren. Bis zum 31.12.2006 wurde zur Identifizierung die sogenannte ISBN-10 eingesetzt. Da die damit möglichen Nummern in einigen Ländern nicht mehr ausreichen, wird seit dem 1.1.2007 die ISBN-13 verwendet. Die ISBN verwendet eine Prüfziffer, also eine Zahl die durch spezielle Verfahren aus den übrigen Ziffern berechnet wird, um z. B. Eingabefehler zu erkennen.

Die Prüfziffer für die ISBN-10 “3-86645-654-9” wird wie folgt berechnet:

Nummer Gewichtung Summe
3 10 30
8 9 72
6 8 48
6 7 42
4 6 24
5 5 25
6 4 24
5 3 15
4 2 8
Summe   288
modulo 11   2
Differenz zu 11   9
Prüfziffer   9

Diese ganze Prozedur kann mit einer abgeleiteten Spalte berechnen lassen und somit überprüfen, ob eine ISBN-Nummer richtig oder falsch übermittelt wurde.

image

Der zu verwendende Ausdruck dazu ist relativ einfach, aufgrund seiner Länge gestaltet sich die Arbeit innerhalb des Editors aber ein bisschen schwieriger.

   1: ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),10,1) == 11 - (

   2:     (((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),1,1) * 10) 

   3:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),2,1) * 9) 

   4:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),3,1) * 8) 

   5:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),4,1) * 7) 

   6:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),5,1) * 6) 

   7:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),6,1) * 5) 

   8:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),7,1) * 4) 

   9:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),8,1) * 3) 

  10:     + ((DT_I8)SUBSTRING(REPLACE(ISBN10,"-",""),9,1) * 2)

  11:     ) % 11) ? true : false)

Aus der ISBN-10 Nummer wird jeweils der mögliche Bindestrich entfernt. Danach werden die einzelnen Positionen mit der jeweiligen Gewichtung multipliziert und zusammen addiert. Der Rest dieser Summe geteilt durch 11 (Modulo 11) wird von 11 subtrahiert. Die resultierende Differenz bildet die Prüfziffer.
Entspricht diese Prüfziffer der letzten Ziffer der ISBN-10, so wird als Ergebnis true ausgegeben, ansonsten false.

Die Berechnung der aktuellen ISBN-13 folgt an sich dem selben Schema, jedoch mit einer anderen Gewichtung und Modulo 10.

Im folgenden kurz aufgeschlüsselt für die ISBN-13 “978-3-86645-654-9”:

Nummer Gewichtung Summe
9 1 9
7 3 21
8 1 8
3 3 9
8 1 8
6 3 18
6 1 6
4 3 12
5 1 5
6 3 18
5 1 5
4 3 12
Summe   131
modulo 10   1
Differenz zu 10   9
Prüfziffer   9

Wer nähere Informationen zu den ISBN benötigt, findet diese im ISBN User’s Manual.

Ähnliche Verfahren lassen sich natürlich nicht nur für die ISBN verwenden, es können auch weitere Nummern die ein Prüfziffernverfahren verwenden wie z.B. EAN,  Patentnummern oder Identcodes der Deutschen Post AG geprüft werden. Eine umfangreiche Liste von Prüfziffern, deren Berechnungsmethoden und teilweise auch weiterführenden Informationen ist hier zu finden.