SEDOL Sprawdź poprawny format funkcji w SQL
Ten sprawdza format na SEDOL . To jest rozszerzony kod SQL przy użyciu dokumentacji na artykuł na link.
Jest to część trzech połączonych artykułów, które sprawdzi ISIN, SEDOL i CUSIP identyfikatorów.
SQL
ALTER FUNCTION CheckSEDOL(@SEDOL NVARCHAR(20))
RETURNS INT AS BEGIN
DECLARE @Check INT
IF RIGHT(@SEDOL,1) NOT BETWEEN '0' AND '9' BEGIN
SET @Check=-1
RETURN @Check
END
IF PATINDEX('%[^0-Z]%',@SEDOL)>0 BEGIN
SET @Check=-3
RETURN @Check
END
DECLARE @Sum INT=0,@Letter INT=1,@Char VARCHAR(1)
WHILE @Letter<LEN(@SEDOL)
BEGIN
SET @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+1
END
SET @Sum=(10 - @Sum%10)% 10
IFLEN(@SEDOL)<>7 BEGIN
SET @Check=-4
RETURN @Check
END
IF RIGHT(@SEDOL,1) BETWEEN '0' AND '9' BEGIN
SET @Check =(CASE WHEN RIGHT(@SEDOL,1)=@Sum THEN 1 ELSE 0 END)
END
RETURN @Check
END