• You can shrink this down quite a bit...

    [font="Courier New"] CREATE FUNCTION CreateABACheckDigit

    --===== Created by Jeff Moden

            (@RoutingNumber CHAR(8))

    RETURNS INT

         AS

      BEGIN

     RETURN (SELECT NULLIF(10-( SUBSTRING(@RoutingNumber,1,1)*3

                              + SUBSTRING(@RoutingNumber,2,1)*7

                              + SUBSTRING(@RoutingNumber,3,1)*1

                              + SUBSTRING(@RoutingNumber,4,1)*3

                              + SUBSTRING(@RoutingNumber,5,1)*7

                              + SUBSTRING(@RoutingNumber,6,1)*1

                              + SUBSTRING(@RoutingNumber,7,1)*3

                              + SUBSTRING(@RoutingNumber,8,1)*7)%10

                          ,10))

        END

    [/font]

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)