Dieser Code wird zuerst geteilt die Saiten in einzelne Wörter und dann Worte überprüfen, die in der anderen Zeichenfolge nicht existieren
Declare @String1 as varchar(100)='Please check requirement and let me know your feedback.';
Declare @String2 as varchar(100)='Please checkout requirement & let me know your feedback';
WITH s1_Splitted AS
(
SELECT wrd.value('.','nvarchar(max)') AS Word
FROM
(SELECT (
SELECT CAST('<x>' + REPLACE((SELECT @String1 AS [*] FOR XML PATH('')),' ','</x><x>') + '</x>' AS XML)
) AS Casted
) AS derived
CROSS APPLY derived.Casted.nodes('/x') AS A(wrd)
)
,s2_Splitted AS
(
SELECT wrd.value('.','nvarchar(max)') AS Word
FROM
(SELECT (
SELECT CAST('<x>' + REPLACE((SELECT @String2 AS [*] FOR XML PATH('')),' ','</x><x>') + '</x>' AS XML)
) AS Casted
) AS derived
CROSS APPLY derived.Casted.nodes('/x') AS A(wrd)
)
SELECT 'only in s1',s1.Word
FROM s1_Splitted AS s1
WHERE NOT EXISTS(SELECT 1 FROM s2_Splitted AS s2 WHERE s2.Word=s1.Word)
UNION ALL
SELECT 'only in s2',s2.Word
FROM s2_Splitted AS s2
WHERE NOT EXISTS(SELECT 1 FROM s1_Splitted AS s1 WHERE s1.Word=s2.Word)
Das Ergebnis (Aufmerksamkeit: die .
nach Feedback als zwei verschiedene Wörter genommen ...)
only in s1 and
only in s1 check
only in s1 feedback.
only in s2 &
only in s2 checkout
only in s2 feedback
Schlussfolgerung aus einem einzigen Beispiel ist problematisch. Haben Sie weitere Beispiele für erwartete Eingaben und die von Ihnen gesuchten Ergebnisse? I.e. suchst du eigentlich nach [edit distance] (https://en.wikipedia.org/wiki/Edit_distance)? –
Im Idealfall ändern * Sie nicht nur * von einem Beispiel zu einem völlig anderen. Ich habe nach mehreren Beispielen gefragt und Sie haben das Beispiel entfernt, dass Antworten bereits geschrieben wurden. –
@Damien_The_Unbeliever Ich bin mir nicht sicher über die Frage, deshalb änderte das Beispiel. Ich möchte herausfinden, dass Wörter, die in zwei Strings nicht üblich sind, jede Hilfe geschätzt werden. –