Bir SQL Fonksiyonu ile CUSIP formatını kontrol edin
SQL Server'da CUSIP biçimini kontrol etmek için bir işlev oluşturun
Bağlam
Bu kod, orada olmaması gereken her türlü karakterin bulunduğu harici kaynaklardan gelen verileri temizlemek için bir içe aktarma rutininin parçası olarak oluşturuldu.
Bu, bir CUSIP biçimini kontrol eder.
Bu, bağlantıdaki Wikipedia makalesindeki belgeler kullanılarak genişletilmiş SQL kodudur.
Bu, ISIN, SEDOL ve CUSIP tanımlayıcılarını kontrol edecek bağlantılı üç makalenin bir parçasıdır.
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
Uyarı!
Bu, gerçekten var olup olmadığını değil, yalnızca CUSIP biçimini kontrol edecektir.
Further Reading
Checking an ISIN
Check a SEDOL