SQL 関数を使用して CUSIP 形式を確認する
SQL Server で CUSIP 形式をチェックする関数を作成する
環境
このコードは、外部ソースから入ってくるデータをクレンジングするためのインポート ルーチンの一部として作成されました。外部ソースには、存在すべきではないあらゆる種類の文字が含まれていました。
これはCUSIPのフォーマットをチェックします。
これは、リンク先のウィキペディアの記事のドキュメントを使用して拡張された SQL コードです。
これは、ISIN、SEDOL、および CUSIP 識別子をチェックする 3 つのリンクされた記事の一部です。
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
警告!
これは、CUSIP が実際に存在するかどうかではなく、CUSIP の形式のみをチェックします。
参考文献
ISINの確認
Check a SEDOL