• -- SQL Server will perform the filter and the conversion in either order

    -- Note that Compute Scalar is plonked anywhere convenient in the execution plan

    -- and may not relate to where it actually occurs, as here.

    WITH SampleData AS (SELECT * FROM (VALUES ('1.2.1'), ('1'), ('1.1'), ('1.1.1')) V (S))

    SELECT

    s1.s,

    NewVal = CASE WHEN s1.s NOT LIKE '%.%.%' THEN CONVERT(decimal(2,1),s1.s) ELSE NULL END

    FROM SampleData s1, SampleData s2, SampleData s3

    WHERE s1.s NOT LIKE '%.%.%' OR s2.s NOT LIKE '%.%.%';

    WITH SampleData AS (SELECT * FROM (VALUES ('1.2.1'), ('1'), ('1.1'), ('1.1.1')) V (S))

    SELECT

    s1.s,

    CONVERT(decimal(2,1),s1.s)

    FROM SampleData s1, SampleData s2, SampleData s3

    WHERE s1.s NOT LIKE '%.%.%' OR s2.s NOT LIKE '%.%.%';

    “Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

    For fast, accurate and documented assistance in answering your questions, please read this article.
    Understanding and using APPLY, (I) and (II) Paul White
    Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden