Yes it is possible, but I would not do it in SQL Server without Regex function:
CREATE TABLE tabC(CompanyName VARCHAR(100));
INSERT INTO tabC(CompanyName)
SELECT 'HSBC Inc' UNION ALL
SELECT 'Barcccclays' UNION ALL
SELECT 'AAAAA' UNION ALL
SELECT 'Testtttt' UNION ALL
SELECT 'Tesco Plc';
WITH mul AS
(
SELECT REPLICATE(CHAR(32 + N), 4) AS val
FROM (select top 95 row_number() over(order by t1.number) as N
from master..spt_values t1) AS s
)
SELECT *
FROM tabC c
WHERE LEN(CompanyName) > 4
AND EXISTS (SELECT 1
FROM mul
WHERE CHARINDEX(mul.val,c.CompanyName) > 0)
RextesterDemo
How it works:
1) Generate replicated values like 'aaaa', 'bbbb', 'cccc' and so on
2) Check if your string contains it.
Warning!
This solution checks only ASCII characters from 32 to 126.
EDIT:
How can incorporate above code like this: select @flag = 1 from tabc where 1 = (WITH mul AS ( SELECT REPLICATE(CHAR(32 + N), 4) AS val FROM (select top 95 row_number() over(order by t1.number) as N from master..spt_values t1) AS s ) SELECT * FROM tabC c WHERE LEN(CompanyName) > 4 AND EXISTS (SELECT 1 FROM mul WHERE CHARINDEX(mul.val,c.CompanyName) > 0)).
I'm getting this error:If this statement is a common table expression, or a change tracking context clause, the previous statement must be terminated with a semicolon. pls help
If you need to use it in context where you cannot use CTE
change it to subquery.
SELECT *
FROM tabC c
WHERE LEN(CompanyName) > 4
AND EXISTS (SELECT 1
FROM (SELECT REPLICATE(CHAR(32 + N), 4) AS val
FROM (select top 95 row_number() over(order by t1.number) as N
from master..spt_values t1) AS s) mul
WHERE CHARINDEX(mul.val,c.CompanyName) > 0)