SQL 関数を使用して SEDOL 形式を確認する
SQL Server で SEDOL 数値形式をチェックする関数を作成する
環境
このコードは、外部ソースから入ってくるデータをクレンジングするためのインポート ルーチンの一部として作成されました。外部ソースには、存在すべきではないあらゆる種類の文字が含まれていました。
これはSEDOLのフォーマットをチェックします。これは、リンク先のウィキペディアの記事のドキュメントを使用して拡張された SQL コードです。
これは、ISIN、SEDOL、および CUSIP 識別子をチェックする 3 つのリンクされた記事の一部です。
SQL
ALTER FUNCTION CheckSEDOL(@SEDOL NVARCHAR(20))RETURNS INT AS BEGINDECLARE @Check INTIF RIGHT(@SEDOL,1) NOT BETWEEN '0' AND '9' BEGINSET @Check=-1RETURN @CheckENDIF PATINDEX('%[^0-Z]%',@SEDOL)>0 BEGINSET @Check=-3RETURN @CheckEND
DECLARE @Sum INT=0,@Letter INT=1,@Char VARCHAR(1)WHILE @Letter BEGINSET @Char=SUBSTRING(@SEDOL,@Letter,1)SET @Sum=@Sum+((SELECT (CASE WHEN @Char BETWEEN '0' AND '9' THEN @Char ELSE ASCII(UPPER(@Char))-55 END))*(CASE @Letter WHEN 1 THEN 1 WHEN 2 THEN 3 WHEN 3 THEN 1 WHEN 4 THEN 7 WHEN 5 THEN 3 WHEN 6 THEN 9 WHEN 7 THEN 1 ELSE 0 END))SET @Letter=@Letter+1ENDSET @Sum=(10 - @Sum%10)% 10
IF LEN(@SEDOL)<>7 BEGINSET @Check=-4RETURN @CheckEND
IF RIGHT(@SEDOL,1) BETWEEN '0' AND '9' BEGINSET @Check =(CASE WHEN RIGHT(@SEDOL,1)=@Sum THEN 1 ELSE 0 END)ENDRETURN @CheckEND
警告!
これは、SEDOL が実際に存在するかどうかではなく、SEDOL の形式のみをチェックします。
参考文献
ISINを確認する
Check a CUSIP