¿Desea devolver el número de veces que ocurre un valor específico dentro de una cadena?

Está bien, así que tengo dos mesas. Table1 tiene una columna de número de referencia (A) y una segunda columna que tiene una cadena de aleatoriedad (B). Table2 solo tiene una columna con una lista de valores que pueden o no estar en la cadena en Table1.

dbo.Tbl_1

+--+---------------------------------------+
|A |B                                      |
+--+---------------------------------------+
|24|BLUE; KITTEN; WHITE; PINK; SLOPE; GREEN|
+--+---------------------------------------+
|51|GREEN; CLOUDY; WHITE; CHIPS            |
+--+---------------------------------------+
|78|PATRIOTS; PINK; PINK; WHITE            |
+--+---------------------------------------+
|22|WHITE; RED; TREES; AMY; GREEN          |
+--+---------------------------------------+

dbo.Tbl_2

+-----+
|C    |
+-----+
|BLUE |
+-----+
|WHITE|
+-----+
|PINK |
+-----+
|BROWN|
+-----+

¿Qué consulta SQL determinaría cuántas veces se encuentra un valor de Table2 en la cadena en Table1? Básicamente quiero devolver el siguiente conjunto de resultados:

+-----+----+
|BLUE |1   |
+-----+----+
|WHITE|4   |
+-----+----+
|PINK |3   |
+-----+----+
|BROWN|NULL|
+-----+----+

FYI: En realidad, Table2 tiene alrededor de 200 registros únicos. Table1 tiene alrededor de 1.6M registros con números de referencia únicos. Ninguna de las tablas es estática.

Respuestas a la pregunta(2)

Su respuesta a la pregunta