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