Use ON for the condition in a JOIN; the condition can be any boolean expression.
Every pair of rows in the two tables are evaluated against the expression; when it returns "true" that pair of rows is part of the result set (of course with a LEFT JOIN, each row in the left table will either be true with one or more rows in the other table, or will be in the result set with nulls for the columns from the second table).
So the answer to your question is yes.
Select *
from TABLE1 AS T1
LEFT JOIN TABLE1 AS T2
ON T2.NAME LIKE '%' + T1.NAME + '%'
WHERE T1.id = 2