FreeAdhocUDF für InterBase und FireBird in deutschin englishen français
homeprevious pageÜbersicht • overview • aperçunext pagelast page Mailing-Liste • mailinglist • liste de diffusionwas ich vermisse • what I missed •eMail Kommentar • eMail commentprint
 

Funktionen enthalten in der FreeAdhocUDF.dll/.so/.dylib :
Prüfzahl Funktionen 27 Funktionen

allgemeine mathematische Verfahren
4 Funktion

angewendete Prüfzahlen
23 Funktionen


Output RETURN Mechanismus wenn nicht anderes angegeben: FREE_IT
Die TestSQLs mit NULL funktionieren nur ab FireBird 2
         
Prüfzahl Funktionen: allgemeine mathematische Verfahren
Vorbemerkung zu Prüfsummen aus Wikipedia (http://de.wikipedia.org/wiki/Pr%C3%BCfsumme):
Eine Prüfsumme ist eine einfache Maßnahme zur Gewährleistung von Datenintegrität bei der Datenübermittlung oder -speicherung. Ein einfaches Beispiel für eine Prüfsumme ist die Quersumme der Ziffern einer Zahl (http://de.wikipedia.org/wiki/Quersumme). Allerdings werden mit diesem Verfahren beispielsweise „Zahlendreher“, also ein häufig vorkommender Fehler in der Übertragung von numerischen Informationen, nicht erkannt.
Prüfsummenverfahren, die mit einer bestimmten Gewichtung der einzelnen Summanden arbeiten, sind recht sicher gegenüber zufälligen Veränderungen, z. B. Zeichenvertauschungen, -verdopplungen oder -auslassungen. Sie werden beispielsweise angewendet bei der ISBN (International Standard Book Number) und bei den GTIN-Codes (früher: EAN-Code).
Der Begriff „Prüfsumme“ wird auch für aufwendigere Prüfverfahren verwendet, die komplexere Berechnungen anstelle der einfachen Aufsummierung der Datenwerte vornehmen, so z. B. für die Zyklische Redundanzprüfung (ZRP, engl. CRC) (http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check). Eine ZRP verwendet statt einfacher Addition eine Polynomdivision und ist im Allgemeinen effektiver bei der Erkennung von Zufallsfehlern als eine primitive Prüfsumme.
Obwohl eine herkömmliche Prüfsumme nützlich ist, um vor unbeabsichtigten Änderungen zu schützen, bietet sie keine Sicherheit gegenüber beabsichtigen Datenänderungen (Manipulation), da sie trivial zu umgehen ist. Es ist deshalb oft notwendig, anstelle eines einfachen Prüfsummenverfahrens kryptografisch stärkere Algorithmen, wie Einweg-Hash-Funktionen (z. B. Message Digests) (http://de.wikipedia.org/wiki/Hash-Funktion), zu benutzen.
Eine ausführliche Beschreibung von Prüfsummen findet man u.a. unter http://www.pruefziffernberechnung.de/Startseite.shtml
 
F_CROSSSUM Funktion von adhoc
Entrypoint crosssum UTF-8 kompatibel
Input INTEGER
natürliche Zahl
Output INTEGER Quersumme von Input
Die Quersumme ist die Summe der Ziffernwerte einer Zahl.
Bsp. 12345: 5+4+3+2+1 = 15
Test-SQL
SELECT 15 AS ISCORRECT, F_CROSSSUM(12345) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CROSSSUM(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_CROSSDIFF Funktion von adhoc
Entrypoint crossdiff UTF-8 kompatibel
Input INTEGER
natürliche Zahl
Output INTEGER Querdifferenz von Input
Die alternierende Quersumme (auch Querdifferenz, Paarquersumme oder Wechselsumme genannt) erhält man, indem man bei einer Zahl, beginnend ganz rechts, die Ziffernwerte abwechselnd subtrahiert und addiert.
Bsp. 12345:  5-4+3-2+1 = 3
Test-SQL
SELECT 3 AS ISCORRECT, F_CROSSDIFF(12345) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CROSSDIFF(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_WEIGHTCROSSSUM Funktion von adhoc
Entrypoint weightcrosssum UTF-8 kompatibel
Input INTEGER
natürliche Zahl
Output INTEGER Gewichtete Quersumme von Input
Eine gewichtete Quersumme erhält man, wenn man die Ziffern erst mit ihrem Stelenwert multipliziert und diese Ergebnisse dann addiert. Es wird dabei mit der niederwertigsten Ziffer begonnen
Bsp. 12345: 5*1 + 4*2 + 3*3 + 2*4 + 1*5 = 35
Test-SQL
SELECT 35 AS ISCORRECT, F_WEIGHTCROSSSUM(12345) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_WEIGHTCROSSSUM(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_ITERATECROSSSUM Funktion von adhoc
Entrypoint iteratecrosssum UTF-8 kompatibel
Input INTEGER
natürliche Zahl
Output INTEGER einstellige (oder iterierte) Quersumme von Input
Von der einfachen Quersumme wird weiter so lange die Quersumme gebildet, bis nur noch eine einstellige Zahl übrig bleibt.
Bsp. 12345: 5+4+3+2+1 = 15 -> 5+1 = 6
Test-SQL
SELECT 6 AS ISCORRECT, F_ITERATECROSSSUM(12345) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ITERATECROSSSUM(NULL) FROM RDB$DATABASE;
nach oben • go top •
 

Prüfzahl Funktionen: angewendete Prüfszahlen
F_ENCRYPTMD5 kompatibel zu FreeUDFLibC
Entrypoint encryptmd5 UTF-8 kompatibel
Input CSTRING(128) String, der verschlüsselt werden soll
Output CSTRING(33) Input-String, verschlüsselt nach dem MD5 Algorithmus
Diese Funktion gibt nie <null> zurück, da auch NULL eine gültigen MD5-Verschlüsselung ergibt.
Achtung: der md5 des gleichen Strings einer ISO-Datenbank IST NICHT IDENTISCH mit dem md5 des GLEICHEN Strings aus einer UTF8-Datenbank!
Nur mit gleichem Zeichensatzes (z.B. innerhalb einer Datenbank) sind Identitätsvergleiche zweier Strings mit md5 tauglich.
TestSQL
SELECT 'e7d31845480111fdba3316129e166860' AS ISCORRECT, F_ENCRYPTMD5('Pauline') FROM RDB$DATABASE;
SELECT 'd41d8cd98f00b204e9800998ecf8427e' AS ISCORRECT, F_ENCRYPTMD5('') FROM RDB$DATABASE;
nach oben • go top •
Vorbemerkung zu GTIN-Nummern aus Wikipedia (http://de.wikipedia.org/wiki/GTIN):
Die Global Trade Item Number (GTIN) ist eine Identifikationsnummer, mit der Produkte und Packstücke weltweit eindeutig identifiziert werden können. GTIN ist ein Sammelbegriff für die Code-Schemata der Barcode-Kennzeichen mit der EAN oder dem Code des UCC und/oder auch der elektronischen Produktnummer, EPC, sämtlich vergeben und verwaltet von GS1.
- EAN steht für International Article Number (früher European Article Number)
- UCC steht für das Uniform Code Council,  die sich auf Standardisierung spezialisiert hat und mittlerweile unter GS1 firmiert
- das UCC hat zum Beispiel den Strichcode Universal Product Code (UPC) entwickelt
- der Elektronische Produktcode (EPC) ermöglicht eine eindeutige Kennzeichnung von Objekten, z. B. Handelseinheiten, logistische Einheiten oder Transportbehälter
- NVE steht für Nummer der Versandeinheit
- Global Returnable Asset IDentifier (GRAI) dient zur Identifikation von wiederverwendbaren Verpackungen und Transporthilfsmitteln
Ab dem 1. Januar 2009 steigt Deutschland auf die international verwendeten Begriffe im Bereich der GS1-Identifikations- und Strichcodestandards um. Die bereits 2005 festgelegten und weltweit gültigen Begriffe sind heute in fast allen der über 100 GS1-Organisationen umgesetzt.
Bezeichnung frühere Bezeichnungen
GTIN-14
GTIN-13 EAN·UCC-13, EAN-13
GTIN-12 EAN·UCC-12, UCC-12, UPC
GTIN-8 EAN·UCC-8, EAN-8
Einen Rechner für GTIN-Nummern findet man unter http://www.gs1-germany.de/internet//content/e39/e50/e221/e234/
nach oben • go top •
F_GTIN8CHECK Funktion von adhoc
Entrypoint gtin8check UTF-8 kompatibel
F_UPC12CHECK Funktion von adhoc
Entrypoint upc12check UTF-8 kompatibel
F_GTIN13CHECK Funktion von adhoc
Entrypoint gtin13check UTF-8 kompatibel
F_GTIN14CHECK Funktion von adhoc
Entrypoint gtin14check UTF-8 kompatibel
F_NVE18CHECK Funktion von adhoc
Entrypoint nve18check UTF-8 kompatibel
Input CSTRING(250) Zahl als String
Output INTEGER Prüfzahl von Input
Ermittlung der Prüfzahl einer GTIN Nummer. Eingegebene Leer-, Trenn- sowie Zeichen, die über die maximale Anzahl  hinausgehen, werden ignoriert.
Test-SQL
SELECT 0 AS ISCORRECT, F_GTIN8CHECK('1234567') FROM RDB$DATABASE;
SELECT 0 AS ISCORRECT, F_GTIN8CHECK('1-2a3b4c5d6e7fxx999') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_GTIN8CHECK(NULL) FROM RDB$DATABASE;
SELECT 2 AS ISCORRECT, F_UPC12CHECK('12345678901') FROM RDB$DATABASE;
SELECT 7 AS ISCORRECT, F_GTIN13CHECK('762220000460') FROM RDB$DATABASE;
SELECT 8 AS ISCORRECT, F_GTIN14CHECK('0123456789012') FROM RDB$DATABASE;
SELECT 0 AS ISCORRECT, F_NVE18CHECK('01234567890123456') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_GTIN8CHECK(NULL') FROM RDB$DATABASE;
nach oben • go top •
F_GTIN8 Funktion von adhoc
Entrypoint gtin8 UTF-8 kompatibel
F_UPC12 Funktion von adhoc
Entrypoint upc12 UTF-8 kompatibel
F_GTIN13 Funktion von adhoc
Entrypoint gtin13 UTF-8 kompatibel
F_GTIN14 Funktion von adhoc
Entrypoint gtin14 UTF-8 kompatibel
F_NVE18 Funktion von adhoc
Entrypoint nve18 UTF-8 kompatibel
Input CSTRING(250) Zahl als String
Output CSTRING(8...18) Komplette Nummer incl. Prüfzahl
Komplette Ausgabe einer GTIN Nummer incl. Prüfzahl. Eingegebene Leer-, Trenn- sowie Zeichen, die über die maximale Anzahl  hinausgehen, werden ignoriert.
Test-SQL
SELECT '12345670' AS ISCORRECT, F_GTIN8('1234567') FROM RDB$DATABASE;
SELECT '123456789012' AS ISCORRECT, F_UPC12('12345678901') FROM RDB$DATABASE;
SELECT '7622200004607' AS ISCORRECT, F_GTIN13('762220000460') FROM RDB$DATABASE;
SELECT '01234567890128' AS ISCORRECT, F_GTIN14('0123456789012') FROM RDB$DATABASE;
SELECT '012345678901234560' AS ISCORRECT, F_NVE18('01234567890123456') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_GTIN8(NULL') FROM RDB$DATABASE;
nach oben • go top •
Vorbemerkung zu ISBN-Nummern aus Wikipedia (http://de.wikipedia.org/wiki/Internationale_Standardbuchnummer):
Die Internationale Standardbuchnummer (International Standard Book Number), abgekürzt ISBN, ist eine Nummer zur eindeutigen Kennzeichnung von Büchern. Daneben können auch andere selbstständige Veröffentlichungen, wie beispielsweise Multimedia-Produkte und Software, mit einer ISBN gekennzeichnet werden, sofern sie einen redaktionellen Anteil enthalten.
Bis 2006 hatte der Nummernraum einer ISBN zehn Stellen einschließlich einer Prüfziffer. Da es in Osteuropa und im englischen Sprachraum Schwierigkeiten gab, für neue Verlage und Publikationen Nummern zu vergeben, wurde die dreizehnstellige ISBN-13 eingeführt. Alte ISBN im zehnstelligen Format werden nun als ISBN-10 bezeichnet.
Seit 1. Januar 2007 ist die Angabe der ISBN-13 verbindlich.
Für andere Formen der Publikation, wie z. B. Periodika oder notierte Musikwerke gibt es eigene Nummernsysteme:
    - ISAN – International Standard Audiovisual Number
    - ISMN – Internationale Standard-Musik-Nummer (für gedruckte und digitalisierte Notensätze)
    - ISRC – The International Standard Recording Code
    - ISRN – International Standard Technical Report Number
    - ISSN – International Standard Serial Number / Internationale Standard-Seriennummer (für Periodika)
    - ISWC – International Standard Musical Work Code
Das ISBN-System wurde an das System internationaler Artikelnummern GTIN (früher EAN) gekoppelt. Damit könnten Bücher weltweit innerhalb des GTIN-Systems in Warenwirtschaftssysteme übernommen werden, ohne dass aufwändige Neuauszeichnungen mit nationalen Strichcodes nötig sind. Darum sind ISBN-13 identisch mit der zum Buch gehörenden GTIN-13.
Die Prüfziffernberechnung von ISBN-10 und ISBN-13 (= GTIN-13) sind verschieden.
nach oben • go top •
F_ISBN10CHECK Funktion von adhoc
Entrypoint isbn10check
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_ISBN10 Funktion von adhoc
Entrypoint isbn10 UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(13) komplette, formatierte ISBN10-Nummer
Feste Länge 10 Zeichen (mit Trennstrichen 13 Zeichen). Gültige Zeichen für die Eingabe sind 0-9, alle anderen Zeichen sowie alle Zeichen die über die Länge von 10 hinausgehen werden entfernt.
Test-SQL
SELECT 3 AS ISCORRECT, F_ISBN10CHECK('3-88229-192') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISBN10CHECK(NULL) FROM RDB$DATABASE;
SELECT '3-88229-192-3' AS ISCORRECT, F_ISBN10('3-88229-192') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISBN10(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_ISBN13CHECK Funktion von adhoc
Entrypoint isbn13check
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_ISBN13 Funktion von adhoc
Entrypoint isbn13 UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(17) komplette, formatierte ISBN13-Nummer
Feste Länge 13 Zeichen (mit Trennstrichen 17 Zeichen). Gültige Zeichen für die Eingabe sind 0-9, alle anderen Zeichen sowie alle Zeichen die über die Länge von 13 hinausgehen werden entfernt.
Test-SQL
SELECT 6 AS ISCORRECT, F_ISBN13CHECK('978-3-88229-192') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISBN13CHECK(NULL) FROM RDB$DATABASE;
SELECT '978-3-88229-192-6' AS ISCORRECT, F_ISBN13('978-3-88229-192') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISBN13(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_ISSN8CHECK Funktion von adhoc
Entrypoint issn8check
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_ISSN8 Funktion von adhoc
Entrypoint issn8 UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(9) komplette, formatierte ISSN8-Nummer
Feste Länge 8 Zeichen (mit Trenstrich 9 Zeichen). Gültige Zeichen für die Eingabe sind 0-9, alle anderen Zeichen sowie alle Zeichen die über die Länge von 8 hinausgehen werden entfernt.
Test-SQL
SELECT 9 AS ISCORRECT, F_ISSN8CHECK('0724-867') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISSN8CHECK(NULL) FROM RDB$DATABASE;
SELECT '0724-8679' AS ISCORRECT, F_ISSN8('0724-867') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ISSN8(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_UPSTNCHECK Funktion von adhoc
Entrypoint upstncheck
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_UPSTN Funktion von adhoc
Entrypoint upstn UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(18) komplette, formatierte UPS Tracking-Nummer
UPS Tracking-Nummer.
Feste Länge 18 Zeichen. Gültige Zeichen für die Eingabe sind 0-9 und A-Z, alle anderen Zeichen sowie alle Zeichen die über die Länge von 18 hinausgehen werden entfernt.
Test-SQL
SELECT 6 AS ISCORRECT, F_UPSTNCHECK('1Z 591580 68 5558773') FROM RDB$DATABASE;
SELECT 6 AS ISCORRECT, F_UPSTNCHECK('591580685558773') FROM RDB$DATABASE;
SELECT 6 AS ISCORRECT, F_UPSTNCHECK('59158068555877311111111') FROM RDB$DATABASE;
SELECT 3 AS ISCORRECT, F_UPSTNCHECK('1Z 0F6915 68 2239322') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_UPSTNCHECK(NULL) FROM RDB$DATABASE;
SELECT '1Z 591580 68 55587736' AS ISCORRECT, F_UPSTN('1Z 591580 68 5558773') FROM RDB$DATABASE
SELECT '1Z 0F6915 68 22393223' AS ISCORRECT, F_UPSTN('1Z 0F6915 68 22393223') FROM RDB$DATABASE
SELECT NULL AS ISCORRECT, F_UPSTN(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_2OF5CHECK Funktion von adhoc
Entrypoint twooffivecheck
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_2OF5 Funktion von adhoc
Entrypoint twooffive UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(13) komplette 2of5-Nummer
2 aus 5 (2 of 5) Nummer.
Variable Länge. Gültige Zeichen für die Eingabe sind 0-9, alle anderen Zeichen werden entfernt.
Für beide Prüfziffern 2of5 industry und 2of5 interleaved geeignet.
Test-SQL
SELECT 5 AS ISCORRECT, F_2OF5CHECK('123456') FROM RDB$DATABASE;
SELECT 5 AS ISCORRECT, F_2OF5CHECK('ABC123456XYZ') FROM RDB$DATABASE;
SELECT 0 AS ISCORRECT, F_2OF5CHECK('1234567') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_2OF5CHECK(NULL) FROM RDB$DATABASE;
SELECT '1234565' AS ISCORRECT, F_2OF5('123456') FROM RDB$DATABASE;
SELECT '12345670' AS ISCORRECT, F_2OF5('1234567') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_2OF5(NULL) FROM RDB$DATABASE;
nach oben • go top •
F_CODE39CHECK Funktion von adhoc
Entrypoint code39check
UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output INTEGER ermittelte Prüfzahl von Input
F_CODE39 Funktion von adhoc
Entrypoint code39 UTF-8 kompatibel
Input CSTRING(250)
zu prüfenden Nummer als String
Output CSTRING(13) komplette Code-39-Nummer
Code-39 (3 aus 9, 3 of 9) Nummer.
Variable Länge. Gültige Zeichen sind 0-9, A-Z und $ % + - . / sowie Leerzeichen, alle anderen Zeichen werden entfernt.
Test-SQL
SELECT 'K' AS ISCORRECT, F_CODE39CHECK('AB-123') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CODE39CHECK(NULL) FROM RDB$DATABASE;
SELECT 'AB-123K' AS ISCORRECT, F_CODE39('AB-123') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CODE39(NULL) FROM RDB$DATABASE;
vorige Seite • previous page • passée sitenach oben • go top • vers le hautnächste Seite • next page • prochain site