Самый простой способ - использовать string_split
, который был представлен в SQL Server 2016 и более поздних версиях.
SELECT
DISTINCT a.transferTypes
FROM
TransferData a
CROSS APPLY
string_split([transferTypes], ',') b
WHERE
TRIM(b.[value]) IN ('TT', 'ST')
Приведенное выше разбивает все значения в transferTypes
и позволяет осуществлять поиск по отдельным значениям.Если вы используете версию ниже SQL Server 2016, вы всегда можете создать функцию, которая будет делать то же самое (например, T-SQL, разделенная строка )
================================================
Небольшое объяснение того, что string_split
делает :
string_split
- это табличная функция, которая вкратце означает, что функция выведетТаблица.При наличии строкового ввода string_split
выведет несколько строк подстрок на основе заданного вами разделителя.
Возьмем, например, следующее:
SELECT
*
FROM
string_split('String1;String2;String3', ';')
Приведенный выше код вернет три строкикак показано ниже:
Это очень мощный вопрос для первоначального вопроса, поскольку он позволяет фильтровать напрямую по отдельным значениям без необходимости использования CHARINDEX
или LIKE
.