Почему это не работает. Когда QTY - это числовой столбец, когда вы отображаете его или неявно преобразуете в varchar (LIKE делает это неявно), ВСЕ числа будут приводиться к одинаковому числу десятичных знаков.
Рассмотрим этот оператор SQL
with TBL(qty) as (select 1.1 union all select 3)
SELECT li.QTY FROM TBL LI WHERE li.QTY like '%.%'
выход
1.1
3.0 << this contains "." even if it does not need to
Приведите его к bigint, и он отбросит все десятичные дроби, затем сравните его снова.
SELECT li.QTY FROM TBL LI
WHERE li.QTY <> CAST(qty as bigint)
Если вы ДОЛЖНЫ использовать LIKE (или просто для показа ..)
SELECT li.QTY, CONVERT(varchar, li.qty)
FROM TBL LI
WHERE li.QTY LIKE '%.%[^0]%'