Для сравнения вы можете просто использовать предложение EXISTS
.
Пример данных
CREATE TABLE TEST(
VAL_A varchar(200),
VAL_B varchar(200)
);
INSERT INTO TEST (VAL_A, VAL_B) VALUES
('john kevin smith', 'Kevin john smith'),
('john kevin smith', 'Kevin, john smith'),
('Alpha beta gamma', 'beta delta alpha');
Запрос:
SELECT VAL_A, VAL_B
FROM TEST
WHERE NOT EXISTS (
SELECT value FROM [dbo].[fn_Split](VAL_A, ' ')
EXCEPT
SELECT value FROM [dbo].[fn_Split]((REPLACE(VAL_B,',','')), ' ')
)
OR
NOT EXISTS (
SELECT value FROM [dbo].[fn_Split]((REPLACE(VAL_B,',','')), ' ')
EXCEPT
SELECT value FROM [dbo].[fn_Split](VAL_A, ' ')
Это вернет совпадающие строки.
+-------------------+-------------------+
| VAL_A | VAL_B |
+-------------------+-------------------+
| john kevin smith | Kevin john smith |
| john kevin smith | Kevin, john smith |
+-------------------+-------------------+
в выводе, вы можете заметить, что комбинация alpha,beta,gamma,delta
не отображается как не совпадают. Вы можете изменить NOT EXISTS
на EXISTS
, если хотите, чтобы строки не совпадали.
ПРОВЕРЬТЕ ДЕМО ЗДЕСЬ
Вы можете использовать joins
если другой столбец идет из другой таблицы. Также используйте операторы REPLACE
соответственно.