• Also, once failures are found, you could distinguish actual '?' values from Unicode values and get the percentage of Unicode characters with ...

    SELECT t.val

    , UnicodeStringLen = len(t.val)

    , UnicodeNonQmarkChars = len(replace(t.val,'?',''))

    , NonQmarkChars = len(replace(convert(varchar, t.val),'?',''))

    , UnicodeChars = len(replace(t.val,'?',''))

    - len(replace(convert(varchar, t.val),'?',''))

    , PercentUnicodeChars =

    (LEN(replace(t.val,'?','')) - len(replace(convert(varchar, t.val),'?','')))

    * 100.0 / len(t.val)

    FROM #TMP t

    WHERE t.val <> CONVERT(varchar,t.val) --FAILURES ONLY