• Off the top of my head, I'm thinking NULL should have worked if the accepting table column allows NULL, and in any event if it didn't, that's a whole nother error message.  It seems more likely to me that you have spaces in your source.

    Either way, the following ought to take care of it:

    If the receiving column allows NULL:

    INSERT INTO tableB (FieldNameB)

      SELECT CASE ISNULL (FieldNameA, '')

               WHEN ''

               THEN NULL

               ELSE CAST (FieldNameA AS DECIMAL (3,0))

             END

      FROM tableA

    If the receiving column does not allow NULL:

    INSERT INTO tableB (FieldNameB)

      SELECT CAST (FieldNameA AS DECIMAL (3,0))

      FROM tableA

      WHERE FieldNameA IS NOT NULL

        AND FieldNameA != ''

        AND FieldNameA LIKE REPLICATE ('[0-9]', LEN (FieldNameA))

    T-SQL has an ISNUMERIC function, but for my tastes it is far too tolerant of non-numerics.  T-SQL needs an ISREALLYTRULYNUMERICHONESTTOGOD function.