Вы можете использовать оператор LIKE
с указанным без учета регистра:
WITH ColorTable(ID, Color) As
(
SELECT 1, 'Red' Union
SELECT 2, 'Blue' union
SELECT 3, 'Green'
)
SELECT
*
FROM
ColorTable
WHERE
'Today we have the blue plate special' LIKE '%' + Color + '%' COLLATE Latin1_General_CI_AS
Результаты:
ID | Color
---+------
2 | Blue
Если у вас есть другая таблица с предложениями, которые вы хотитетест, вы можете сделать соединение между ними, используя то же сравнение, что и условие соединения:
WITH ColorTable(ID, Color) As
(
SELECT 1, 'Red' Union
SELECT 2, 'Blue' union
SELECT 3, 'Green'
)
, Sentences(Sentence) AS
(
SELECT 'Today we have the blue plate special' UNION
SELECT 'The light is red' UNION
SELECT 'That is lemon yellow' UNION
SELECT 'A red fox jumped over a green bucket'
)
SELECT
*
FROM
Sentences s
JOIN
ColorTable c
ON
s.Sentence LIKE '%' + c.Color + '%' COLLATE Latin1_General_CI_AS
Это вернет строку для каждого цвета, найденного в каждом предложении:
Sentence | ID | Color
-------------------------------------+----+------
The light is red | 1 | Red
Today we have the blue plate special | 2 | Blue
A red fox jumped over a green bucket | 1 | Red
A red fox jumped over a green bucket | 3 | Green