You can cast the numeric values to a float, and then back to a varchar, which will allow you to compare you varchar cols
Observe:
CREATE TABLE #table_1 ( col_1 varchar(10), col_2 varchar(10) )
INSERT INTO #table_1
SELECT 'A', 'A' UNION ALL
SELECT 'A', 'A' UNION ALL
SELECT 'A', 'A' UNION ALL
SELECT 'A', 'B' UNION ALL
SELECT '1.0', '1' UNION ALL
SELECT '1.2', '1' UNION ALL
SELECT '2.0', '2' UNION ALL
SELECT '2.2', '2.1'UNION ALL
SELECT '2.2', '2.0'
SELECT
col_1,
col_2,
CASE WHEN
CASE WHEN ISNUMERIC(col_1) = 1
THEN CAST( CAST( col_1 AS FLOAT ) AS VARCHAR(10) )
ELSE col_1
END
=
CASE WHEN ISNUMERIC(col_2) = 1
THEN CAST( CAST( col_2 AS FLOAT ) AS VARCHAR(10) )
ELSE col_2
END
THEN 'Equal'
ELSE 'Different'
END AS [comparison]
FROM #table_1
DROP TABLE #table_1
.0is not required when the value is1.