SQL फ़ंक्शन के साथ CUSIP प्रारूप की जाँच करें
SQL सर्वर में CUSIP प्रारूप की जाँच करने के लिए एक फ़ंक्शन बनाएँ
संदर्भ
यह कोड बाहरी स्रोतों से आने वाले डेटा को शुद्ध करने के लिए एक आयात दिनचर्या के हिस्से के रूप में बनाया गया था, जहां सभी प्रकार के वर्ण थे जो वहां नहीं होने चाहिए थे।
यह एक CUSIP के प्रारूप की जाँच करता है।
यह लिंक पर विकिपीडिया लेख पर प्रलेखन का उपयोग करके SQL कोड का विस्तार किया गया है।
यह तीन लिंक किए गए लेखों का हिस्सा है जो ISIN, SEDOL और CUSIP पहचानकर्ताओं की जाँच करेगा।
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 के प्रारूप की जाँच करेगा, न कि यह वास्तव में मौजूद है या नहीं।
Further Reading
Checking an ISIN
Check a SEDOL