This query will return all tables with and columns that match ‘test’ in any way. If you want to search against views too, just remove the “t.table_type” restriction:

SELECT
  c.table_name,
  c.column_name,
  c.data_type,
  c.character_maximum_length,
  c.numeric_precision,
  c.numeric_scale
FROM	
  information_schema.columns c
  INNER JOIN information_schema.tables t 
    ON c.table_name = t.table_name 
WHERE
  c.table_name LIKE '%test%'
  OR c.column_name LIKE '%test%'
  AND t.table_type = 'BASE TABLE'
ORDER BY 
  c.table_name,
  c.column_name

If you want to search for a list of columns of a particular length, you could use the following query:

SELECT 
  table_name, 
  column_name, 
  character_maximum_length 
FROM 
  information_schema.Columns C 
WHERE 
  data_type = 'varchar' 
  AND table_schema = 'dbo' 
  AND character_maximum_length < 20 
  AND character_maximum_length > -1 
ORDER BY
  table_name desc