Überprüfen Sie das CUSIP-Format mit einer SQL-Funktion
Erstellen Sie eine Funktion zum Überprüfen des CUSIP-Formats in SQL Server
Kontext
Dieser Code wurde als Teil einer Importroutine erstellt, um Daten zu bereinigen, die aus externen Quellen kommen, wo es alle möglichen Zeichen gab, die dort nicht hätten sein sollen.
Dieser prüft das Format einer CUSIP .
Dies ist ein erweiterter SQL-Code, der die Dokumentation zum Wikipedia-Artikel über den Link verwendet.
Dies ist Teil von drei verlinkten Artikeln, in denen ISIN-, SEDOL- und CUSIP-Kennungen überprüft werden.
SQL
ALTER FUNCTION CheckCUSIP(@CUSIP NVARCHAR(20))RETURNS INT AS BEGINDECLARE @Check INTIF RIGHT(@CUSIP,1) NOT BETWEEN '0' AND '9' BEGINSET @Check=-1RETURN @CheckENDIF PATINDEX('%[^0-Z]%',@CUSIP)>0 BEGINSET @Check=-3RETURN @CheckENDDECLARE @Sum INT=0,@Letter INT=1,@Char VARCHAR(1),@LetVal INT
WHILE @Letter BEGINSET @Char=SUBSTRING(@CUSIP,@Letter,1)SET @LetVal=((SELECT (CASE WHEN @Char BETWEEN '0' AND '9' THEN @Char ELSE ASCII(UPPER(@Char))-55END))*(CASEWHEN @Letter%2=1 THEN 1 ELSE 2 END))
If @LetVal > 9 BEGINSET @LetVal =(@LetVal % 10)+(@LetVal / 10)End
SET @Sum=@Sum+@LetValSET @Letter=@Letter+1END
SET @Sum=(10 -(@Sum % 10))% 10IF LEN(@CUSIP)<>9 BEGINSET @Check=-4RETURN @CheckEND
IF RIGHT(@CUSIP,1) BETWEEN '0' AND '9' BEGINSET @Check =(CASEWHEN RIGHT(@CUSIP,1)=@Sum THEN 1 ELSE 0 END)ENDRETURN @Check
END
Warnung!
Dabei wird nur das Format des CUSIP überprüft, nicht ob es tatsächlich existiert.
Further Reading
Checking an ISIN
Check a SEDOL